Я искал вокруг попытки найти ответ на этот вопрос, и я, может казаться, не разыскиваю его. Возможно, это слишком поздно вечером для понимания ответа, таким образом, я обращаюсь к превосходным читателям здесь.
У меня есть следующий бит данных JSON, что я выхожу из записи CouchDB:
"{\"description\":\"fdsafsa\",\"order\":\"1\",\"place\":\"22 Plainsman Rd, Mississauga, ON, Canada\",\"lat\":43.5969175,\"lng\":-79.7248744,\"locationDate\":\"03/24/2010\"},{\"description\":\"sadfdsa\",\"order\":\"2\",\"place\":\"50 Dawnridge Trail, Brampton, ON, Canada\",\"lat\":43.7304774,\"lng\":-79.8055435,\"locationDate\":\"03/26/2010\"},"
Эти данные хранятся в Python dict под ключом'locations
'в названном dict'my_plan
'. Я хочу к убежищу эти данные CouchDB в Python dict, таким образом, я могу сделать следующее в шаблоне Django:
{% for location in my_plan.locations %}
<tr>
<td>{{ location.place }}</td>
<td>{{ location.locationDate }}</td>
</tr>
{% endfor %}
Я нашел много информации о преобразовании dicts к JSON, но ничему при возвращении другого пути.
Строка, которую вы показываете, не является JSON-кодированным объектом (эквивалентным Python dict) - скорее это массив (эквивалентный списку) без скобок и с лишней запятой в конце. Итак (используя simplejson для переносимости версии - стандартная библиотека json
в 2.6, конечно, тоже подходит!):
>>> import simplejson
>>> js = "{\"description\":\"fdsafsa\",\"order\":\"1\",\"place\":\"22 Plainsman Rd, Mississauga, ON, Canada\",\"lat\":43.5969175,\"lng\":-79.7248744,\"locationDate\":\"03/24/2010\"},{\"description\":\"sadfdsa\",\"order\":\"2\",\"place\":\"50 Dawnridge Trail, Brampton, ON, Canada\",\"lat\":43.7304774,\"lng\":-79.8055435,\"locationDate\":\"03/26/2010\"},"
>>> simplejson.loads('[%s]' % js[:-1])
[{'description': 'fdsafsa', 'order': '1', 'place': '22 Plainsman Rd, Mississauga, ON, Canada', 'lat': 43.596917500000004, 'lng': -79.724874400000004, 'locationDate': '03/24/2010'}, {'description': 'sadfdsa', 'order': '2', 'place': '50 Dawnridge Trail, Brampton, ON, Canada', 'lat': 43.730477399999998, 'lng': -79.805543499999999, 'locationDate': '03/26/2010'}]
Если вы действительно хотите dict, вам нужно указать, как обращаться с этими двумя безымянными элементами, т.е. какие произвольные ключи вы хотите на них наложить...?
Используйте модуль json
для загрузки JSON. (В версиях до 2.6 использовался сторонний модуль simplejson
, у которого точно такой же API.)
>>> import json
>>> s = '{"foo": 6 , "bar": [1, 2, 3]} '
>>> d = json.loads (s)
>>> print d
{u'foo' : 6, u'bar ': [1, 2, 3]}
Ваши фактические данные не могут быть загружены таким образом, поскольку на самом деле это два объекта JSON, разделенных запятой и конечной запятой. Вам нужно будет разделить их или как-то разобраться с этим.