python - 将编码的json转换为utf-8

时间:2016-03-10 23:58:12

标签: python json encoding utf-8

我有几个需要在python脚本中处理的json文件,尽管它似乎不是有效的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'
    }
    ]
}
  1. 它有单引号而不是双引号
  2. 已编码(参见u
  3. 某些字母被编码,例如代表\xf6
  4. ö

    理想情况下,应该可以使用片段阅读json:

    import json
    import pprint
    
    
    with open('leads.json') as data_file:
        data = json.load(data_file)
    
    pprint(data)
    

    如何将输入json转换为utf-8格式的有效json?

1 个答案:

答案 0 :(得分:2)

正如我所说,那不是JSON,它是Python对象的打印表示(碰巧看起来类似于JSON)。要安全地导入它,您可以使用ast.literal_eval

from pprint import pprint
import ast
with open('leads.json') as data_file:
       data = ast.literal_eval(data_file.read())
pprint(data)