一尘不染

将JSON转换成Python字典

json

我一直在寻找有关此问题的答案,但似乎无法找到答案。也许到了傍晚才找出答案,所以我转向这里的优秀读者。

我从CouchDB记录中提取了以下JSON数据:

"{\"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字典中,该locations字典位于称为“ my_plan” 的字典中键“ ”
下。我想将此数据从CouchDB转换为Python dict,以便可以在Django模板中执行以下操作:

{% for location in my_plan.locations %}                                                           
<tr>
    <td>{{ location.place }}</td>
    <td>{{ location.locationDate }}</td>
</tr>

{% endfor %}

我发现了很多有关将字典转换为JSON的信息,但是没有其他方法可以返回。


阅读 206

收藏
2020-07-27

共1个答案

一尘不染

您显示的字符串不是JSON编码的对象(相当于Python
dict的eqv)-更像是一个数组(等于列表的eqv),没有括号,并且末尾带有多余的逗号。因此(使用simplejson进行版本可移植性-2.6中的标准库json当然也可以!!):

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

如果您真的想要一个字典,则必须指定如何对待这两个未命名的项,即,您想对它们使用哪些任意键…?

2020-07-27