¿Cómo eliminar el objeto json usando python?

Estoy usando python para eliminar y actualizar un archivo JSON generado a partir de los datos proporcionados por el usuario, de modo que solo unos pocos elementos deben almacenarse en la base de datos. Quiero eliminar un objeto particular del archivo JSON.

Mi archivo JSON es:

[ { "ename": "mark", "url": "Lennon.com" }, { "ename": "egg", "url": "Lennon.com" } ] 

Quiero eliminar el objeto JSON con un nombre de mark .

Como soy nuevo en Python, intenté eliminarlo convirtiendo los objetos en dict pero no funciona. ¿Hay alguna otra forma de hacerlo? Probé este:

 index=0 while index < len(data): next=index+1 if(data[index]['ename']==data[next]['ename']): print "match found at" print "line %d and %d" %(next,next+1) del data[next] index +=1 

Aquí hay un ejemplo completo que carga el archivo JSON, elimina el objeto de destino y luego envía el objeto JSON actualizado al archivo.

 #!/usr/bin/python # Load the JSON module and use it to load your JSON file. # I'm assuming that the JSON file contains a list of objects. import json obj = json.load(open("file.json")) # Iterate through the objects in the JSON and pop (remove) # the obj once we find it. for i in xrange(len(obj)): if obj[i]["ename"] == "mark": obj.pop(i) break # Output the updated file with pretty JSON open("updated-file.json", "w").write( json.dumps(obj, sort_keys=True, indent=4, separators=(',', ': ')) ) 

El punto principal es que encontramos el objeto iterando a través de los objetos en la lista cargada, y luego sacamos el objeto de la lista una vez que lo encontramos. Si necesita eliminar más de un objeto de la lista, debe almacenar los índices de los objetos que desea eliminar y luego eliminarlos todos de una vez que haya llegado al final del bucle for (no lo hace). desea modificar la lista mientras itera a través de ella).

La forma correcta de json es deserializarlo, modificar los objetos creados y, si es necesario, serializarlos de nuevo a json. Para ello, utiliza el módulo json . En resumen, use = json.loads() para leer json y = json.dumps() para crear cadenas json. En tu ejemplo, esto sería:

 import json o = json.loads("""[ { "ename": "mark", "url": "Lennon.com" }, { "ename": "egg", "url": "Lennon.com" } ]""") # kick out the unwanted item from the list o = filter(lambda x: x['ename']!="mark", o) output_string = json.dumps(o) 

Necesitas usar el módulo json . Estoy asumiendo python2. Prueba esto:

 import json json_data = json.loads('') for i in xrange(len(json_data)): if(json_data[i]["id"] == "mark"): del json_data[i] break 

Usted tiene una lista allí con dos elementos, que son diccionarios. Para eliminar el primero, puede usar list.remove(item) o list.pop(0) o list.pop(0) del list[0] .

http://docs.python.org/2/tutorial/datastructures.html#more-on-lists

Su archivo json contiene en una lista de objetos, que son diccionarios en Python. Simplemente reemplace la lista con una nueva que no tenga el objeto en ella:

 import json with open('testdata.json', 'rb') as fp: jsondata = json.load(fp) jsondata = [obj for obj in jsondata if obj['ename'] == 'mark'] print json.dumps(jsondata, indent=4)