JSON-> Строка в питоне - PullRequest
       2

JSON-> Строка в питоне

18 голосов
/ 11 апреля 2011

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

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

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

Print Status

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

active

Ответы [ 3 ]

25 голосов
/ 11 апреля 2011

Это НЕ «строка 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}]'
>>>

РЕДАКТИРОВАТЬ: если вы используете Python 2.5, используйте import simplejson as json вместо import json.Сделайте свой код чуть более ориентированным на будущее, сделав это:

try:
    import json
except ImportError:
    import simplejson as json
4 голосов
/ 11 апреля 2011

Прежде всего, это не 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

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

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

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

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

print result[0]['status']
0 голосов
/ 11 апреля 2011
import simplejson
_dict = simplejson.loads(json_data)
for entry in _dict:
# loop over list
    print entry.get('status','Failure')
    # Find key in dict/entry
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...