2011-11-22 16 views
8

¿Cómo puedo iterar a través del siguiente archivo json y si fa = "cc.ee" luego agregar un valor dentro de fb?parsing 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

Tenga en cuenta que el [JSON Validador] (http://jsonlint.com/) tiene problemas con su JSON. Valida si elimina las dos últimas comas (vea 'json_string' en la respuesta de Pablo). –

Respuesta

17

Los objetos JSON se comportan como los diccionarios. Se puede añadir un valor al asignar a la nueva clave, como si se tratara de un diccionario:

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

Una cosa adicional sobre el módulo 'json': para versiones anteriores' simplejson' debería estar disponible si 'json' no lo es. Al hacer 'import simplejson as json' (' import json' si 'ImportError' fue capturado) uno puede ganar compatibilidad con versiones anteriores y posiblemente obtener ganancias de rendimiento (se dice que' simplejson' se actualiza con mayor frecuencia). Ambos módulos tienen la misma interfaz, por lo que se usan de la misma manera. Ver más en [esta pregunta] (http://stackoverflow.com/questions/712791/json-and-simplejson-module-differences-in-python). – Tadeck