Python来处理json格式的数据(loads和load区别、dumps和dump区别)

一、JSON大致简介

  • JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。
  • JSON 是存储和交换文本信息的语法。类似 XML。
  • JSON 比 XML 更小、更快,更易解析。
  • JSON和XML两种格式的语言都是垮语言、跨平台的。                                                                                                               跨语言:c、c++、java、python、php、go等等都可以处理                                                                                                       跨平台:Windows、Linux、Unix
  • json更为清晰且冗余更少,更轻量级,传输效率更高
  • xml常常导致复杂的代码,极低的开发效率
  • 对于大多数web应用来说,根本不需要复杂的XML来传输数据

二、代码演练

import json

# JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。
# 在json的编解码过程中,python 的原始类型与json类型会相互转换
'''Python 编码为 JSON 类型转换对应表'''
# Python	                                        JSON
# dict	                                            object
# list, tuple	                                    array
# str	                                            string
# int, float, int- & float-derived Enums	        number
# True	                                            true
# False	                                            false
# None	                                            null
'''JSON 解码为 Python 类型转换对应表'''
# JSON	                                            Python
# object	                                        dict
# array	                                            list
# string	                                        str
# number(int)	                                    int
# number(real)	                                    float
# true	                                            True
# false	                                            False
# null	                                            None


class TestPythonJson:
    data = {'name': '啦啦', 'age': 21, 'sex': '男', 'wight': 62.5, 'height': 177, 'girlfriend': None}

    def test_dumps_python_to_json(self):
        '''
        python中的dict类型数据编码成json格式数据,json.dumps(): 对数据进行编码。
        :return:data_dict_to_json:python中dict类型的数据编码成json格式数据
        '''
        data_dict_to_json = json.dumps(self.data, ensure_ascii=False)
        return data_dict_to_json

    def test_loads_json_to_python(self, data_dict_to_json):
        '''
        json格式数据解码成python中的dict类型数据,json.loads(): 对数据进行解码。
        :param data_dict_to_json: json格式的数据
        :return:
        '''
        data_json_to_dict = json.loads(data_dict_to_json)
        print(f'原始数据——json格式data_dict_to_json{data_dict_to_json}\njson格式数据解码成dict格式后为:{data_json_to_dict}\n'
              f'数据类型为:{type(data_json_to_dict)}\n')

    def test_dump_python_to_json(self, data):
        '''
        如果要处理的是json文件可以使用json.dump()来对python中的dict类型数据进行编码,生成json格式的数据,保存到文件中
        :param data: python中的dict类型数据
        :return:
        '''
        with open('data.json', mode='w', encoding='utf-8') as file:
            # 如果ensure_ascii是true(即默认值),输出保证将所有输入的非ASCII字符转义.
            # 如果 ensure_ascii 是 false,这些字符会原样输出。
            json.dump(data, file, ensure_ascii=False)

    def test_load_json_to_python(self):
        '''
        如果要处理的是json文件可以使用json.load()来对json格式的文件中的数据进行解码,生成python中的dict类型的数据
        :return:
        '''
        with open('data.json', mode='r', encoding='utf-8') as file:
            data_python = json.load(file)
            print(f'通过load()方法读取json文件中的数据并转换成python中的dict类型的数据为:{data_python}')


if __name__ == '__main__':
    # 创建类的实例对象
    test_python_json = TestPythonJson()
    # 调用test_dumps_python_to_json()方法对python中的dict类型数据编码成json格式数据
    print(f"原始数据python中的data{test_python_json.data}\ndict格式转换成json格式后为:{test_python_json.test_dumps_python_to_json()}"
          f"\n类型为:{type(test_python_json.test_dumps_python_to_json())}\n")
    # 调用test_loads_json_to_python()方法将json格式数据解码成python中的dict类型数据
    test_python_json.test_loads_json_to_python(test_python_json.test_dumps_python_to_json())
    # 调用test_dump_python_to_json()方法将python中的dict类型数据进行编码,生成json格式的数据,保存到文件data.json中
    test_python_json.test_dump_python_to_json(test_python_json.data)
    # 调用test_load_json_to_python()将json格式的文件中的数据进行解码,生成python中的dict类型的数据
    test_python_json.test_load_json_to_python()

三、关于JSON其他相关拓展知识参见官方文档(点我)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值