Подтвердить что ты не робот

JSON-> String в python

Скажем, я получаю эту строку JSON

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

Как я могу преобразовать эти отдельные значения в строки? Поэтому я могу сказать

Print Status

И он возвращает

active
4b9b3361

Ответ 1

Это НЕ "строка JSON", полученная от внешнего источника. Это похоже на результат json.loads(external_JSON_string). Также Print Status не будет работать; вы имеете в виду Print Status.

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

Вот что выглядит "линия JSON":

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

EDIT: Если вы используете Python 2.5, используйте import simplejson as json вместо import json. Сделайте свой код немного более перспективным, сделав это:

try:
    import json
except ImportError:
    import simplejson as json

Ответ 2

Прежде всего, это не JSON, как уже указывалось - это уже python.

Я думаю, вы хотите, чтобы ключи dict автоматически трансформировались в локальные переменные. Это будет действительно плохая идея, хотя теоретически возможно использование 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

Некоторые проблемы:

  • Ваши ключи могут перезаписать некоторые существующие локальные переменные
  • Ключи могут быть unicode, как бы вы получили доступ к именам переменных?

Кроме того, как указано в python docs, locals() не следует изменять.

Короче: сделайте это так:

print result[0]['status']

Ответ 3

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