2011-11-22 14 views
8

Jak mogę iterować przez następujący plik json i jeśli fa = "cc.ee" następnie dodać wartość wewnątrz fb?parsowanie 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

Należy zauważyć, że [JSON Validator] (http://jsonlint.com/) ma problemy z twoim JSON. Sprawdza, czy usuwa się dwa ostatnie przecinki (patrz 'json_string' w odpowiedzi Pablo). –

Odpowiedz

17

Obiekty JSON zachowują się jak słowniki. Możesz dodać wartość, przypisując nowy klucz, tak jak w przypadku słownika:

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

Dodatkowa sprawa z modułem 'json': w starszych wersjach' simplejson' powinno być dostępne, jeśli 'json' nie jest. Wykonując polecenie 'import simplejson as json' (' import json', jeśli został przechwycony 'ImportError'), można uzyskać kompatybilność ze starszymi wersjami i być może zyskać na zwiększeniu wydajności (" simplejson "ma być częściej aktualizowany). Oba moduły mają ten sam interfejs, dlatego są używane w ten sam sposób. Zobacz więcej w [to pytanie] (http://stackoverflow.com/questions/712791/json-and-simplejson-module-differences-in-python). – Tadeck