Python学习笔记(6):JSON的编码和解码

简介

JSON是一种轻量级的数据交换格式,它具有格式简单,易于读写,易于解析等优点。wiki中是这样定义JSON的:

In computing, JavaScript Object Notation or JSON is an open-standard file format that uses human-readable text to transmit data objects consisting of attribute–value pairs and array data types (or any other serializable value). It is a very common data format used for asynchronous browser–server communication, including as a replacement for XML in some AJAX-style systems.
JSON is a language-independent data format. It was derived from JavaScript, but as of 2017 many programming languages include code to generate and parse JSON-format data. The official Internet media type for JSON is application/json. JSON filenames use the extension .json.

Encode过程

Encode是把Python对象转换成JSON对象的过程。Python对象和JSON对象类型对应规则如下:

PythonJSON
dictobject
list,tuplearray
str,unicodestring
int,long,floatnumber
Truetrue
Falsefalse
Nonenull

常用方法有两个:dump和dumps。

dump函数参数说明
json.dump(obj, fp, 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)

dump函数将Python对象“obj”转换成JSON对象后写入文件fp,fp是一个可写文件对象。

  • 如果skipkeys为True,则跳过非基本类型的键值(str, unicode, int, long, float, bool, None),否则会抛出TypeError错误。
  • 如果ensure_ascii为True,所有的非ASCII字符都不能解析。
  • 如果check_circular为false,转换时不再检查循环引用,如果出现循环引用,则抛出OverflowError错误。
  • 如果allow_nan为false,当对象中有超出float范围的值时(nan, inf, -inf),会抛出ValueError错误。
  • 如果indent是非负数,则打印时会有相应的缩进;如果是0或者负数,则没有缩进。
  • 如果指定了separators,那么分隔符会使用指定的(item_separator, key_separator) ,默认为(‘, ‘, ‘: ‘)。
  • 如果指定了default,default应该是一个返回可解码的JSON或抛出TypeError错误的函数。
  • 如果sort_keys为true,则输出按键值的字典顺序排序。
dumps函数参数说明

dumps函数和dump函数的参数意义相同,唯一不同的是dumps函数输出结果是一个字符串。

Decode过程

Decode是把JSON对象转换成Python对象的过程。JSON对象和Python对象类型对应规则如下:

JSONPython
objectdict
arraylist
stringunicode
number(int)int,long
number(real)float
trueTrue
falseFalse
nullNone

常用方法有:load和loads,它们的区别与dump和dumps之间的区别相同。

load函数参数说明
json.load(fp[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
  • fp必须是一个可读文件。
  • encoding是decode过程的编码格式。
  • object_hook是一个可选函数,如果解码结果为一个dict,则可以用object_hook代替dict
  • parse_float,parse_int,parse_constant都是类型转换方法。
loads函数参数说明
json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

loads函数的参数意义与load相同。

第三方库Demjson

第三方库Demjson提供了encode和decode两个方法,用于JSON的编码和解码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值