18

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
1

3 Answers 3

25

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
Sign up to request clarification or add additional context in comments.

1 Comment

So if what he is showing isn't a line of JSON - then what does one use to stringify that? Is that already a string? Is there something that needs to be done to it to treat it as a string (i.e. "un-unicode" it for example)?
4

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']

Comments

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

1 Comment

I get this error: File "/Library/Python/2.5/site-packages/simplejson/__init__.py", line 385, in loads return _default_decoder.decode(s) File "/Library/Python/2.5/site-packages/simplejson/decoder.py", line 402, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) TypeError: expected string or buffer

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.