Python学习笔记06

Python JSON

JSON函数

使用 JSON 函数需要导入 json 库:import json

  • json.dumps:将 Python 对象编码成 JSON 字符串
  • json.loads:将已编码的 JSON 字符串解码为 Python 对象
  • encode:将 Python 对象编码成 JSON 字符串
  • decode:将已编码的 JSON 字符串解码为 Python 对象

json.dumps

json.dumps 用于将 Python 对象编码成 JSON 字符串

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)

参数解释:

  • obj: Python 对象
  • skipkeys: skipkeys可以跳过那些非string对象当作key的处理。在encoding过程中,dict对象的key只可以是string对象,如果是其他类型,那么在编码过程中就会抛出ValueError的异常
  • ensure_ascii: 如果obj里包括非ASCII码,True时,编成ASCII码; False时,不进行编码,原样输出。json.dumps 序列化时对中文默认使用的ascii编码,输出的为ascii码值,而不是中文。当设置ensure_ascii==FALSE 时,输出即为中文
  • check_circular: 默认为True,值为False时,"循环引用检查"对容器类型跳过检查,并且也可能导致溢出错误/或者更糟
  • allow_nan: 默认为True,值为False时,对于序列化超出范围的float值,严格遵守JSON规范,将是一个ValueError而不是使用JavaScript等价物(NaN,Infinity,-Infinity)
  • indent: 根据数据格式缩进显示,读起来更加清晰, indent的值,代表缩进空格式
  • separators: 去掉‘,’ ‘:’后面的空格,在传输数据的过程中,越精简越好,冗余的东西全部去掉
  • default: 是一个函数,该函数能够把自定义类型的对象转换成可序列化的基本类型
  • sort_keys: 告诉编码器按照字典key排序(a到z)输出
>>> import json
>>> data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
>>> json=json.dumps(data)
>>> print json
[{"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}]
>>> data
[{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4}]

>>> print json.dumps(data, sort_keys=True, indent=2, separators=(',', ': '))
[
  {
    "a": 1,
    "b": 2,
    "c": 3,
    "d": 4,
    "e": 5
  }
]

json.loads

json.loads 用于解码 JSON 数据。该函数返回 Python 字段的数据类型

json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

参数解释:

  • s: 待解码的 JSON 数据
  • encoding: 编码方式
  • object_hook: 该函数负责把反序列化后的基本类型对象转换成自定义类型的对象
  • parse_float: 如果指定,将调用每个JSON浮点的字符串进行解码。默认情况下,这相当于浮点(NUMYSTR)。这可以用于使用另一个数据类型或解析器用于JSON浮点
>>> import json
>>> jData='{'username':'李华','sex':'male','age':16}'
  File "<stdin>", line 1
    jData='{'username':'李华','sex':'male','age':16}'
                    ^
SyntaxError: invalid syntax
>>> import json
>>> jData='{"a":1,"b":2,"c":3, "d":4}'
>>> result=json.loads(jData)
>>> print result
{u'a': 1, u'c': 3, u'b': 2, u'd': 4}
>>> result
{u'a': 1, u'c': 3, u'b': 2, u'd': 4}
>>> type(result)
<type 'dict'>
>>> type(jData)
<type 'str'>

encode

Python encode() 函数用于将 Python 对象编码成 JSON 字符串

demjson.encode(self, obj, nest_level=0)
>>> import demjson
>>> data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
>>> result = demjson.encode(data)
>>> print result
[{"a":1,"b":2,"c":3,"d":4,"e":5}]
>>> type(result)
<type 'unicode'>
>>> type(data)
<type 'list'>

decode

Python 可以使用 demjson.decode() 函数解码 JSON 数据。该函数返回 Python 字段的数据类型

demjson.decode(self, txt)
>>> import demjson
>>> jdata='{"a":1,"b":2,"c":3,"d":4,"e":5}'
>>> result=demjson.decode(jdata)
>>> print result
{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
>>> type(result)
<type 'dict'>
>>> type(jdata)
<type 'str'>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值