【发布时间】:2016-03-10 23:58:11
【问题描述】:
我有几个 json 文件需要在 python 脚本中处理,尽管它似乎不是有效的 json 格式:
{
'data': [
{
'ad_id': u'6038487',
'adset_id': u'6038483800',
'campaign_id': u'603763200',
'created_time': u'2015-12-17T15:26:04+0000',
'field_data': [
{u'values': [u'Fahrrad'], u'name': u'what is your vehicle?'},
{u'values': [u'Coco'], u'name': u'first_name'},
{u'values': [u'Homer'], u'name': u'last_name'},
{u'values': [u'aaa@hotmail.de'], u'name': u'email'},
{u'values': [u'+490999999'], u'name': u'phone_number'}
], 'id': u'5655545710'
},
{
'ad_id': u'39392400',
'adset_id': u'39366200',
'campaign_id': u'39363200',
'created_time': u'2014-12-16T13:01:52+0000',
'field_data': [
{u'values': [u'Frankfurt'], u'name': u'in_welcher_stadt_m\xf6chtest_du_arbeiten?'},
{u'values': [u'Auto'], u'name': u'what is your vehicle?'},
{u'values': [u'Homer'], u'name': u'first_name'},
{u'values': [u'abc'], u'name': u'last_name'},
{u'values': [u'XYZ@gmail.com'], u'name': u'email'},
{u'values': [u'0555555555'], u'name': u'phone_number'}
],
'id': u'149809770'
}
]
}
- 它有单引号而不是双引号
- 被编码(见
u) - 一些字母被编码,例如
\xf6代表ö
理想情况下,json 应该可以通过 sn-p 读取:
import json
import pprint
with open('leads.json') as data_file:
data = json.load(data_file)
pprint(data)
如何将输入的 json 转换为 utf-8 格式的有效 json?
【问题讨论】:
-
那不是 JSON。可以使用
ast.literal_eval将其读入 Python 对象。 -
是的,你所拥有的实际上是一个打印的字典,而不是一个有效的 JSON 对象。
-
但是有没有办法将其转换为有效的 json 格式?
-
转成有效JSON的方法是先调用
ast.literal_eval,再调用json.dump结果。
标签: python json encoding utf-8