Python标准库之json库

目录

一、简介

二、方法

三、数据格式


一、简介

Json,全称JavaScript Object Notation,也就是JavaScript对象标记,通过对象和数组的组合表示数据,虽然构造简洁但是结构化程度非常高,是一种轻量级的数据交换格式。Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式。现在也常用于http请求中,所以对json的各种学习,是自然而然的事情。

二、方法

主要用于将python对象编码为json格式输出或存储,以及将json格式对象解码为python对象。

方法描述
json.dump()传入一个python对象,将其编码为json格式后存储到IO流中
json.dumps()传入一个python对象,将其编码为json格式后存储到str中
json.load()传入一个json格式的文件流,将其解码为python对象
json.loads()传入一个json格式的str,将其解码为python对象

1.json.loads()

用法:传入一个json格式的str,将其编码为python对象

eg:

一段 JSON 形式的字符串,它是 str 类型,我们用 json.loads转换成python的数据结构,变成列表或字典,这样我们就能进行操作了。

import json

data = '''
[{
    "name": "小明",
    "height": "170",
    "age": "18"
}, {
     "name": "小红",
    "height": "165",
    "age": "20"
}]
'''

# 打印data类型
print(type(data))
# json类型的数据转化为python类型的数据
new_data = json.loads(data)
# 打印data类型
print(type(new_data))

运行结果:

 这样来我们就可以用索引获取对应的内容了,例如想要获取第一个元素里的name属性,可以使用如下方式:

import json

data = '''
[{
    "name": "小明",
    "height": "170",
    "age": "18"
}, {
     "name": "小红",
    "height": "165",
    "age": "20"
}]
'''

# json类型的数据转化为python类型的数据
new_data = json.loads(data)
# 获取内容
name = new_data[0]['name']
new_name = new_data[0].get('name')
# 打印转换后data类型

print(name)
print(new_name)

运行结果:

2.json.load()

用法:传入一个json格式的文件流,将其编码为python对象

eg:

load方法操作的是整个文件对象,这里是将整个整个文件对象里面的内容转化为json对象。(下图是文件操作对象)

import json

# 构建该文件的文件对象
with open('test1.json',encoding='utf-8')as fp:
    # 加载垓文件对象,转换为python类型的数据
    pyth_list = json.load(fp)
    print(pyth_list)
    print(type(pyth_list))
    print(type(pyth_list[0]))


运行结果:

2.json.dumps()

把python类型的数据转换成json字符串

在这里插入图片描述

 dumps函数

import json

data = '''
[{
    "name": "小明",
    "height": "170",
    "age": "18"
}, {
     "name": "小红",
    "height": "165",
    "age": "20"
}]
'''

# 打印要来data类型
print(type(data))
# json类型的数据转化为python类型的数据
new_data = json.loads(data)

# 把python类型的数据转换成json字符串
lit = json.dumps(new_data)

# 打印转换后data类型
print(type(new_data))

print(type(lit))

运行结果:

其实loads和dumps的用法都是一致的,loads是将json类型的数据转化为python类型的数据,而dumps是将json类型的数据转化为python类型的数据。相当于一个是编码一个是解码。

2.json.dump()
把python类型的数据以json格式储存到文件中

在这里插入图片描述

eg:

为了输出中文,还需要指定参数 ensure_ascii 为 False

我们发现一个问题,就是转成json字符串之后,中文显示是乱码。
这个是因为json在进行序列化时,默认使用的是编码是ASCII,而中文为Unicode编码,ASCII中不包含中文,所以出现了乱码。
想要json.dumps()能正常显示中文,只要加入参数ensure_ascii=False即可,这样json在序列化的时候,就不会使用默认的ASCII编码。

三、数据格式

一个 JSON 对象可以写为如下形式:

[{
    "name": "小明",
    "height": "170",
    "age": "18"
}, {
     "name": "小红",
    "height": "165",
    "age": "20"
}]

由中括号包围的就相当于列表类型,列表中的每个元素可以是任意类型,这个示例中它是字典类型,由大括号包围。

JSON 可以由以上两种形式自由组合而成,可以无限次嵌套,结构清晰,是数据交换的极佳方式。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Pythonjson是用于处理JSON数据的标准库。它提供了一组函数和方法,用于将Python对象编码为JSON字符串,或将JSON字符串解码为Python对象。下面是json的一些常用方法: 1. 将Python对象编码为JSON字符串:使用`json.dumps()`方法可以将Python对象编码为JSON字符串。例如: ```python import json data = { "name": "John", "age": 30, "city": "New York" } json_str = json.dumps(data) print(json_str) ``` 输出: ``` {"name": "John", "age": 30, "city": "New York"} ``` 2. 将JSON字符串解码为Python对象:使用`json.loads()`方法可以将JSON字符串解码为Python对象。例如: ```python import json json_str = '{"name": "John", "age": 30, "city": "New York"}' data = json.loads(json_str) print(type(data)) print(data) ``` 输出: ``` <class 'dict'> {'name': 'John', 'age': 30, 'city': 'New York'} ``` 3. 将Python对象编码为JSON数据并写入文件:使用`json.dump()`方法可以将Python对象编码为JSON数据,并将其写入文件中。例如: ```python import json data = { "name": "John", "age": 30, "city": "New York" } with open("data.json", "w") as f: json.dump(data, f) ``` 4. 从JSON文件中读取数据并解码为Python对象:使用`json.load()`方法可以从JSON文件中读取数据,并将其解码为Python对象。例如: ```python import json with open("data.json", "r") as f: data = json.load(f) print(type(data)) print(data) ``` 输出: ``` <class 'dict'> {'name': 'John', 'age': 30, 'city': 'New York'} ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我和程序有一个能跑就行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值