Python中json模块详解

it2024-07-23  43

Python中json模块详解

前言:

        JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。

        它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。

        简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。

        易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。    

                   处理json数据python里有专用的内置模块:import json

                   Json 模块提供了四个方法: dumps、dump、loads、load

一.  dumps和dump 序列化方法:

        dumps只完成了序列化为str;

        dump必须传文件描述符,将序列化的str保存到文件中;

                def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=None,default=None, sort_keys=False, **kw):

                # 序列号 “obj” 数据类型 转换为 JSON格式的字符串

                        data = [{

                                "name": '鲍勃',

                                "gender": "male",

                                 "birthday": "1992-10-18"

                                }]

                        with open('data.json','w') as f:

                        f.write(json.dumps(data,indent=2,ensure_ascii=False))

                         print(type(json.dumps(data,indent=2,ensure_ascii=False)))        #

                def 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” 数据类型 转换为 JSON格式的字符串,再将字符串写入文件中,也就是说”tp”这个参数必须有。

                        data = [{

                                "name": '鲍勃',

                                "gender": "male",

                                "birthday": "1992-10-18"

                                }]

                        with open('data.json','w') as f:

                        json.dump(data,f,indent=1,ensure_ascii=False)

二. loads和load 反序列化方法:

        loads 只完成了反序列化;

        load 只接收文件描述符,完成了读取文件和反序列化;

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

                将包含str类型的JSON文档反序列化为一个python对象

                        with open('data.json','r') as f:

                                data = json.loads(f.read())

                        print(type(data)) #

                def load(fp, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):

                将一个包含JSON格式数据的可读文件饭序列化为一个python对象

                        with open('data.json','r') as f:

                                data = json.load(f)

                        print(type(data)) #

三、列举一下dumps()的可填参数:

        skipkey:默认为False,当dict对象里的数据不是Python的基本数据类型;(str,unicode,int,long,float,bool,None)时,当skipkey为False,就会报错,如果skipkey为True,则可以跳过这类key;

        indent:如果填0或者不填,则按照一行进行打印,否则按照indent的数值显示前面的空格(正整数形式);

        separators:分隔符,默认为“(',',':')”,它表示key之间用“,”隔开,key和value之间用“:”隔开;

        encoding:编码格式,默认值是UTF-8;

        sort_keys:对key、value进行排序,默认值是False,即不排序;

        ensure_ascii:默认为True,如果dict对象里含有none-ASCII的字符,则显示\uXX的格式,如果为False,则能正常显示出来;


最新回复(0)