笔记-python-standard library-19.2 json

笔记-python-standard library-19.2 json

 

1.      JSON简介

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

 

2.  安装使用

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

python3环境自带该库

source code: Lib/json/__init_.py

 

 

最常用的功能:

函数

描述

json.dumps

将 Python 对象编码成 JSON 字符串

json.loads

将已编码的 JSON 字符串解码为 Python 对象

json.dump

将数据写入json文件中

json.load

从json文件中读取数据

 

 

2.      使用

2.1.    json.dump

json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

将对象按格式转换表转化为JSON格式流写入文件(准确来说是文件句柄,也支持写入数据写入类文件句柄)

skipkeys:如果为True,非基本类型键(str,int,float,bool,None)会被跳过并抛出一个TypeError异常。

ensure_ascii:如果为真(默认),输入进行转义;为否则不进行转义。

 

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

with open('a.txt', 'w', encoding='utf-8') as fi:

    js_dump = json.dump(data, fi)

print(js_dump)

 

2.2.    json.dumps

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)

与json.dump()基本类似,除了不写入文件而是返回一个str对象。

需要注意的是JSON中键/值对的键总是str类型的,当一个字典转化为JSON格式,所有的键都被转化为字符串。

而这会导致存在非字符串键时有loads(dumps(x)) != x

 

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

js = json.dumps(data)

print(type(js))     #<class 'str'>

 

2.3.    json.load

json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

从文件中读取数据

 

a = [1,2,3,4,5,6,7,8,9]

with open('a.txt', 'w', encoding='utf-8') as fi:

    js_dump = json.dump(a, fi)

 

with open('a.txt', 'r', encoding='utf-8') as fi:

    data = json.load(fi)

print(type(data)) #<class ‘list’>

 

2.4.    json.loads

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

将str,bytes,bytearray类型的实例转换为python对象。

 

js = json.loads(json_str)

 

2.5.    编码与解码

class json.JSONDecoder(*, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, strict=True, object_pairs_hook=None)

Simple JSON decoder.

格式转换对应表:

JSON

Python

object

dict

array

list

string

str

number (int)

int

number (real)

float

true

True

false

False

null

None

 

 

class json.JSONEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)

Extensible JSON encoder for Python data structures.

 

格式转换对应表:

Python

JSON

dict

object

list, tuple

array

str

string

int, float, int- & float-derived Enums

number

True

true

False

false

None

null

 

2.6.    exceptions

exception json.JSONDecodeError(msg, doc, pos)

Subclass of ValueError with the following additional attributes:

 

msg:

The unformatted error message.

doc

The JSON document being parsed.

pos

The start index of doc where parsing failed.

lineno

The line corresponding to pos.

colno

The column corresponding to pos.

 

posted @ 2018-05-25 22:59  木林森__𣛧  阅读(143)  评论(0)    收藏  举报