json.loads仅适用于nonunicode JSON

时间:2014-12-02 22:55:40

标签: python json

我在下面显示了一些json。

{  
   u'application':{  
      u'platform':u'iPhone',
      u'locale':u'en_US',
      u'server':{  
         u'test':False
      },
      u'os_version':u'8.1',
      u'carrier':u'unknown',
      u'device':u'iPhone Simulator',
      u'app_version':u'unknown',
      u'os':u'iPhone OS',
      u'properties':{  

      },
   },
   u'data':[  
      {  
         u'session':{  
            u'properties':{  

            }
         },
         u'events':[  
            {  
               u'timestamp':1416848727792,
               u'properties':{  

               },
               u'event_sequence_number':427,
               u'network_type':u'unknown'
            },
         ]
      }
   ],
   u'data_version':u'2.0'
}

如果我str()这个json并将其设置为等于变量a。

然后我执行json.loads(a)

我收到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 365, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 381, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 1 column 2 (char 1)

但是如果json没有unicode表示,json.loads工作正常。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

问题的前提是错误的:给出的输入不是有效的JSON。

根据需要使用json.dump()json.dumps()生成您随后尝试加载的文件。