Преобразование JSON в Python dict

Я искал вокруг попытки найти ответ на этот вопрос, и я, может казаться, не разыскиваю его. Возможно, это слишком поздно вечером для понимания ответа, таким образом, я обращаюсь к превосходным читателям здесь.

У меня есть следующий бит данных 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, но ничему при возвращении другого пути.

23
задан serv-inc 6 October 2017 в 09:39
поделиться

3 ответа

Строка, которую вы показываете, не является 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, вам нужно указать, как обращаться с этими двумя безымянными элементами, т.е. какие произвольные ключи вы хотите на них наложить...?

18
ответ дан 29 November 2019 в 01:18
поделиться
  • Используйте модуль 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, разделенных запятой и конечной запятой. Вам нужно будет разделить их или как-то разобраться с этим.

    • Где вы взяли эту строку?
37
ответ дан 29 November 2019 в 01:18
поделиться
django.utils.simplejson.loads(someJson)
2
ответ дан 29 November 2019 в 01:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: