Python——第五章:json模块

什么是json:

json 模块是用于处理 JSON(JavaScript Object Notation)数据的模块,翻译过来叫js对象简谱。JSON是一种轻量级的数据交换格式,常用于将数据在不同语言之间进行传递。

我们先来看一段json代码:

wf = {
    "name": "汪峰",
    "age": 18,
    "hobby": "上头条",
    "wife": {
        "name": '子怡',
        "age": 19,
        "hobby": ["唱歌""跳舞""演戏"]
    }
}

这个不是字典么?对的,在python里这玩意叫字典,但是在javascript里这东西叫json。一模一样的,我们发现用这样的数据结构可以完美的表示出任何对象,并且可以完整的把对象表示出来,只要代码格式比较好,那可读性也是很强的.所以大家公认用这样一种数据结构作为数据交互的格式.那在这个鬼东西之前是什么呢?来看一段XML代码

<?xml version="1.0" encoding="utf-8" >
<wf>
    <name>汪峰</name>
    <age>18</age>
    <hobby>上头条</hobby>
    <wife>
        <name>子怡</name>
        <age>18</age>
        <hobbies>
            <hobby>唱歌</hobby>
            <hobby>跳舞</hobby>
            <hobby>演戏</hobby>
        </hobbies>
    </wife>
</wf>

在过去, web 浏览器和服务器之间的通信,是使用XML(eXtensible Markup Language)做为数据交换的格式。XML具有类似 HTML 的标记语言结构,它的设计目标是提供一种通用的方法来描述和交换结构化数据。

JSON在各种编程语言中都有良好的支持,包括但不限于JavaScript、Python、Java、C#等。这种广泛的支持使得不同语言的系统能够轻松地解析和生成JSON数据,从而实现数据的互通。因为它的简单性、易读性、广泛支持以及在不同语言和环境中的通用性。这使得它成为了一种理想的数据交换格式,连接了前端和后端系统。

在前后端分离的架构中,前端通常通过HTTP请求与后端进行数据交互。JSON作为数据的通用表示形式,可以在前端和后端之间传递、解析和展示数据,促进了前后端的协作和集成。前端可以通过Ajax请求获取JSON格式的数据,然后使用JavaScript轻松地解析和展示这些数据。后端可以接收JSON格式的数据,轻松地将其解析为服务器端的数据结构。

现在大部分的 Web 应用都选择使用 JSON 作为首选的数据交换格式,但仍然存在一些情况下使用 XML 的场景。

 

为此,我们要学会将json代码和python代码相互转换:

在Python中,json 模块提供了两个主要的操作方法:json.dumps()json.loads()

  1. json.dumps():把python中的字典或者列表,转化成json字符串 
    这个方法用于将Python对象转换为JSON格式的字符串。它接受一个Python对象作为参数,然后返回一个包含JSON数据的字符串。例如:
    import json
    
    dic = {
        "id": 1,
        "name": "我的天啊这么好玩吗",
        "usertype": 0
    }
    
    s = json.dumps(dic, ensure_ascii=False)    #json处理中文,要用ensure_ascii=False,以免被ASCII码转化
    print(s, type(s))
    
    #运行结果
    {"id": 1, "name": "我的天啊这么好玩吗", "usertype": 0} <class 'str'>

    上述代码将字典 dic 转换为JSON字符串。

  2. json.loads():前端返回的json字符串,变成python中的字典
    这个方法用于将JSON格式的字符串转换为Python对象。它接受一个包含JSON数据的字符串,并返回一个相应的Python对象。例如:
    import json
    
    json_string = '{"id": 1, "name": "我的天啊这么好玩吗", "usertype": 0}'
    dic = json.loads(json_string)
    print(dic,type(dic))
    
    #运行结果
    {'id': 1, 'name': '我的天啊这么好玩吗', 'usertype': 0} <class 'dict'>

    上述代码将JSON字符串转换为Python字典。

  3. 变成字典后就方便进行操作和查找了
    print(d['name'])
    
    我的天啊这么好玩吗

json 模块的主要作用在于在不同系统、不同编程语言之间进行数据的传递和交换。由于JSON格式是一种通用的数据表示方式,许多编程语言都支持它,因此它成为了一种方便的数据交换格式。在Python中,json 模块的使用使得将Python对象与JSON之间进行转换变得非常简便。

 

前端的json和python中的字典有什么区别

d = {"id": 1, "islogin": True, "hasGirl": None}
print(json.dumps(d))

#运行结果
{"id": 1, "islogin": true, "hasGirl": null}

为此我们看到了对比差异:转换的过程还是有代码变换的。包括数据类型的大\小写,和表达方式。

#在Python中
{"id": 1, "islogin": True, "hasGirl": None}
#在Json中
{"id": 1, "islogin": true, "hasGirl": null}

 

列表一样可以进行这样的转化

lst = ["哈啰", "摩托", True, "春风"]
s = json.dumps(lst, ensure_ascii=False)
print(s, type(s))

#运行结果
["哈啰", "摩托", true, "春风"] <class 'str'>

其他的数据类型,需要做自定义转化。

 

json模块和pickle模块类似,json.dump()可以直接把字典写入到文件

import json
wf = {
    "name": "汪峰",
    "age": 18,
    "hobby": "上头条",
    "wife": {
        "name": '子怡',
        "age": 19,
        "hobby": ["唱歌", "跳舞", "演戏"]
    }
}

# 写入一个json文件,名字叫wf.txt
with open("wf.txt", mode="w", encoding="utf-8") as file:
    json.dump(wf, file, ensure_ascii=False)
    
#运行结果
{"name": "汪峰", "age": 18, "hobby": "上头条", "wife": {"name": "子怡", "age": 19, "hobby": ["唱歌", "跳舞", "演戏"]}}

同理json.load()可以直接把文件读出来

d = json.load(open("wf.txt", mode="r", encoding="utf-8"))
print(d, type(d))

#运行结果
{'name': '汪峰', 'age': 18, 'hobby': '上头条', 'wife': {'name': '子怡', 'age': 19, 'hobby': ['唱歌', '跳舞', '演戏']}} <class 'dict'>

 

JSON记住6个要点

  1. json是一种数据交互的数据格式
  2. 来自于前端
  3. dumps  ensure_ascii=False
  4. loads
  5. dump 文件操作  ensure_ascii=False
  6. load   文件操作
posted @   Magiclala  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示