2011-11-22 17 views
8

Aşağıdaki json dosyası aracılığıyla nasıl yineleyebilirim ve eğer fa = "cc.ee" ise fb içine bir değer ekler?ayrıştırma json python

{ 
     "pk": 1, 
     "fa": "cc.ee", 
     "fb": { 
      "fc": "", 
      "fd_id": "12345", 
     } 
    }, 


#!/usr/bin/env python 
import json,urllib 
json_data=open("my.json") 
data = json.load(json_data) 
for entry in data: 
    json.dumps(entry) 
json_data.close() 
exit 
+0

Not: Bir sözlüğe için yaptığımız gibi yeni anahtara atayarak değeri ekleyebilirsiniz. Son iki virgüyü kaldırırsanız doğrular (Pablo'nun cevabındaki 'json_string''e bakın). –

cevap

17

JSON nesneleri sözlükler gibi davranır. [JSON Validator] (http://jsonlint.com/) sizin JSON ile sorunları olduğunu

json_string = """ 
{ 
    "pk": 1, 
    "fa": "cc.ee", 
    "fb": { 
     "fc": "", 
     "fd_id": "12345" 
    } 
}""" 

import json 
data = json.loads(json_string) 
if data["fa"] == "cc.ee": 
    data["fb"]["new_key"] = "cc.ee was present!" 

print json.dumps(data) 
+3

json' modülü hakkında bir şey daha: json' değilse, önceki sürümlerde 'simplejson' kullanılabilir olmalıdır. 'Import SimpleRson' ('ImportError' yakalanmışsa ithal json ')' json 'ithal ederek, eski sürümler ile uyumluluk kazanabilir ve muhtemelen performans kazançlarından kazanç sağlayabilir ('basitjson'un daha sık güncellendiği söylenir). Her iki modül de aynı arayüze sahiptir, böylece aynı şekilde kullanılırlar. [Bu soru] 'da daha fazlasını görün (http://stackoverflow.com/questions/712791/json-and-simplejson-module-differences-in-python). – Tadeck