HankSmackHood
HankSmackHood

Reputation: 4873

JSON->String in python

Say I get this line of JSON

[{u'status': u'active', u'due_date': None, u'group': u'later', u'task_id': 73286}]

How can I convert those separate values to strings? So I can say

Print Status

And it returns

active

Upvotes: 18

Views: 47410

Answers (3)

phoibos
phoibos

Reputation: 3979

First of all, that ain't JSON as was already pointed out - it's python already.

I think you want the keys of the dict automatically transform into local variables. This would be a really bad idea, although in theory, it's possible using locals ():

result = [{u'status': u'active', u'due_date': None, u'group': u'later', u'task_id': 73286}]
for k, v in result[0].items():
    locals() [k] = v
print status # prints active

Some problems:

  • Your keys might overwrite some existing local variables
  • Keys might be unicode, how would you access the variable names?

Also, as stated in the python docs, locals () should not be modified.

In short: do it like this:

print result[0]['status']

Upvotes: 4

John Machin
John Machin

Reputation: 82934

That is NOT a "line of JSON" as received from an external source. It looks like the result of json.loads(external_JSON_string). Also Print Status won't work; you mean print status.

>>> result = [{u'status': u'active', u'due_date': None, u'group': u'later', u'task_id': 73286}]
>>> print result[0]['status']
active

This is what a "line of JSON" looks like:

>>> import json
>>> json.dumps(result)
'[{"status": "active", "due_date": null, "group": "later", "task_id": 73286}]'
>>>

EDIT: If using Python 2.5, use import simplejson as json instead of import json. Make your code a bit more future-proof by doing this:

try:
    import json
except ImportError:
    import simplejson as json

Upvotes: 25

jbcurtin
jbcurtin

Reputation: 1803

import simplejson
_dict = simplejson.loads(json_data)
for entry in _dict:
# loop over list
    print entry.get('status','Failure')
    # Find key in dict/entry

Upvotes: 0

Related Questions