zoukankan      html  css  js  c++  java
  • python json dumps与loads

    json.dumps() 是将一个Python数据结构转换为一个JSON编码的字符串

    json.loads() 是将一个JSON编码的字符串转换为一个Python数据结构
     
    一般要求当要字符串通过loads转为python数据类型时,得外层用单引号,里面元素key和value用双引号,不然会报错
     
    直接将字符串转换为字典时,会出现如下情况
    >>> import json
    >>> a = '{"a":1,"b":2}'
    >>> b = json.loads(a)
    >>> b
    {u'a': 1, u'b': 2}
    字典的字符串元素前面均加了个‘u’,  这样产生的字典,再转成字符串,转会字典时会报错
    >>> c
    "{u'a': 1, u'b': 2}"
    >>> d = json.loads(c)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/local/lib/python2.7/json/__init__.py", line 339, in loads
        return _default_decoder.decode(s)
      File "/usr/local/lib/python2.7/json/decoder.py", line 364, in decode
        obj, end = self.raw_decode(s, idx=_w(s, 0).end())
      File "/usr/local/lib/python2.7/json/decoder.py", line 380, in raw_decode
        obj, end = self.scan_once(s, idx)
    ValueError: Expecting property name: line 1 column 2 (char 1)
    所以loads在处理中,还需要把里面的u前缀修饰符去掉
     
    如果要避免,转换中字典元素出现‘u’,可以直接用eval()函数将其转为字典
    In [212]: a
    Out[212]: '{"a":"b"}'

    In [213]: b =eval(a)

    In [214]: b
    Out[214]: {'a': 'b'}
     
     
     
     
     
     
     
     
  • 相关阅读:
    菜根谭#308
    菜根谭#307
    菜根谭#306
    菜根谭#305
    菜根谭#304
    菜根谭#303
    菜根谭#302
    菜根谭#301
    菜根谭#300
    菜根谭#299
  • 原文地址:https://www.cnblogs.com/yxqnote/p/0719_ms.html
Copyright © 2011-2022 走看看