Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Removing JSON property in array of objects

Tags:

I have a JSON array that I'm cleaning up in Python. I want to remove the imageData property:

data.json

[{"title": "foo", "imageData": "xyz123"}, {"title": "bar", "imageData": "abc123"}, {"title": "baz", "imageData": "def456"}] 

I am setting up a list comprehension to remove the property, but I'm not sure how to create the variable that focuses on imageData:

import json  with open('data.json') as json_data:     data = json.load(json_data)     clean_data = [ item for item in data if not item['imageData'] ]     # Write `clean_data` to new json file 

When I print the list comprehension, it returns an empty array. What do I have to correct to get this working properly?

like image 555
Evan Emolo Avatar asked Oct 03 '13 19:10

Evan Emolo


People also ask

How do I remove a property from a JSON object?

To remove JSON element, use the delete keyword in JavaScript.

How do I remove a JSON object from a list in Python?

To delete a JSON object from a list: Parse the JSON object into a Python list of dictionaries. Use the enumerate() function to iterate over the iterate over the list. Check if each dictionary is the one you want to remove and use the pop() method to remove the matching dict.


2 Answers

An easy solution to your problem is deleting the unwanted key in place, with del:

import json  with open('data.json') as json_data:     data = json.load(json_data)     for element in data:          del element['imageData']  

You should add some safety checks, but you get the idea.

like image 52
Stefano Sanfilippo Avatar answered Sep 27 '22 20:09

Stefano Sanfilippo


If not all the elements have an imageData key, then using del will cause an KeyError exception. You could guard against that by using pop with a default:

for item in data:      item.pop('image', None) 
like image 38
Daniel Roseman Avatar answered Sep 27 '22 21:09

Daniel Roseman