简述json模块

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,他的数据结构与Python中的字典一样,键值对来表示数据间的关系,可以包含列表。

在编写接口传递数据时,往往需要使用JSON对数据进行封装。python和json数据类型的转换,看作为编码与解码。

主要讲一下他的四个方法:

1json.dumps()将 Python 对象编码成 JSON对象,字符串str

2json.loads()将已编码的 JSON 字符串解码为 Python 对象

3json.dump()

4json.load()

一)json.dumps()和json.dump()

1.都是序列化的方法,对Python对象编码

json.dumps() 将 Python 对象序列化,编码成 JSON 字符串,存在一个对应的转换表

json.dump()也是编码成json格式的字符串,但 dump必须传文件描述符,将序列化的str保存到文件中

编码:json.dumps()

Python JSON
dict object
list, tuple array
str string
int, float, int- & float-derived Enums number
True true
False false
None null

 

语法: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)

    # Serialize ``obj`` to a JSON formatted ``str``.
    # 序列号 “obj” 数据类型 转换为 JSON格式的字符串 

语法: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):
     obj, fp是默认的必选参数,其他可选参数
可以理解为两个动作,一个动作是将”obj“转换为JSON格式的字符串,还有一个动作是将字符串写入到文件中,也就是说文件描述符fp是必须要的参数 """

2.例句:
>>>a={ "errcode":"0", "errmsg":"" , "success":"true"}
>>>type(a)
dict
>>>aj=json.dumps(a)
>>>aj
 '{"errcode": "0", "errmsg": "", "success": "true"}'
把Python对象编码成json数据,字符串。
>>>type(aj)
 str
>>>with open('D://file.txt','w') as f:
>>>b=json.dump(a,f)

作用和下面形同,将数据编码并且存储到文件中。

>>>with open('D://file.txt','w') as f:
>>>f.write(a)

(二)json.loads()和json.load()

1. 反序列化,是对json对象的解码

json.loads() 将 JSON 字符串解码成Python对象 ,存在一个对应转换的表

json.load()  将 JSON 字符串解码成Python对象,并将解码后的Python对象保存到文件中

解码:json.loads()

JSONPython
object dict
array list
string str
number (int) int
number (real) float
true True
false False
null None

语法:与上面的相同,转换相反,将json数据解码成Python对象

2例句:

>>>b=json.loads(aj)
>>>b
{'errcode': '0', 'errmsg': '', 'success': 'true'}
>>>type(b)
dict

 这是对json数据的解码,解码后为Python的字典类型。对于组成元素为字典的字符串,可以使用json.loads()方法转换为字典,例如:

>>>c='{"a":1,"e":3}'
>>>type(c)
str
>>>d=json.loads(c)
>>>d
{"a":1,"e":3}
>>>type(d)
dict

  注意:这里的字典的字符串c包含的字典的键必须为双引号,单引号无法转换。

(三)第三方demjson模块,用来编码解码json对象

demjson.encode(),python编码为json

demjson.decode(),json解码为Python

详细可以看文档demjson

 >>> import demjson

    >>> demjson.encode( ['one',42,True,None] )    # From Python to JSON
    '["one",42,true,null]'

    >>> demjson.decode( '["one",42,true,null]' )  # From JSON to Python
    ['one', 42, True, None]

 贴几个参考的链接:

python中json的使用 ,

python读写json文件

Python3中json的encode和decode

原文地址:https://www.cnblogs.com/zz22--/p/9322241.html