Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JSON->String in python

Tags:

python

json

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
like image 897
HankSmackHood Avatar asked Apr 10 '11 20:04

HankSmackHood


2 Answers

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
like image 74
John Machin Avatar answered Oct 05 '22 22:10

John Machin


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']
like image 37
phoibos Avatar answered Oct 06 '22 00:10

phoibos