Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parsing JSON string/object in Python

I've recently started working with JSON in python. Now I'm passing a JSON string to Python(Django) through a post request. Now I want to parse/iterate of that data. But I can't find a elegant way to parse this data, which somehow I'm pretty sure exists.

data = request.POST['postformdata']
print data
{"c1r1":"{\"Choice\":\"i1\"}","c2r1":"{\"Bool\":\"i2\"}","c1r2":"{\"Chars\":\"i3\"}"}

jdata = json.loads(data)
print jdata
{u'c1r2': u'{"Chars":"i3"}', u'c1r1': u'{"Choice":"i1"}', u'c2r1': u'{"Bool":"i2"}'}

This is what was expected. But now when I want to get the values, I start running into problems. I have to do something like

mydecoder = json.JSONDecoder()
for part in mydecoder.decode(data):                                             
    print part
# c1r2 c1r1 c2r1 ,//Was expecting values as well

I was hoping to get the value + key, instead of just the key. Now, I have to use the keys to get values using something like

print jdata[key]

How do I iterate over this data in a simpler fashion, so that I can iterate over key, values?

like image 715
Neo Avatar asked Mar 14 '11 05:03

Neo


People also ask

How do you parse a JSON string in Python?

If you have a JSON string, you can parse it by using the json. loads() method. The result will be a Python dictionary.

How do I extract text from a JSON file in Python?

So first thing you need to import the 'json' module into the file. Then create a simple json object string in python and assign it to a variable. Now we will use the loads() function from 'json' module to load the json data from the variable. We store the json data as a string in python with quotes notation.

What is parsing JSON in Python?

JSON is a lightweight data format for data interchange which can be easily read and written by humans, easily parsed and generated by machines. It is a complete language-independent text format. To work with JSON data, Python has a built-in package called json.


1 Answers

To iterate key and value, you can write

for key, value in jdata.iteritems():
    print key, value

You can read the document here: dict.iteritems

like image 90
Fang-Pen Lin Avatar answered Oct 23 '22 05:10

Fang-Pen Lin