使用Python标准库: json 实现json格式字符串与Python对象的互转。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/64893.html
但注意,只有有效的json格式字符串才能够转换为Python对象。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/64893.html
- 字符串必须用双引号
- 在同一个对象中,所有的键必须是唯一的
- 最后一个元素后面不应有逗号
- 字符串中不应包含注释
- json.loads()
- loads为'load string'的缩写,用来解析json格式的字符串(该字符串要包含有效的json数据),返回python对象(列表或字典)
import json
# json格式的字符串 可解析为python列表
json_data_list = '[{"name": ["Alice", "Bob"], "age": [25, 30]}]'
# json格式的字符串 可解析为python字典
json_data_dict = '{"name": ["Alice", "Bob"], "age": [25, 30]}'
# 解析json格式的字符串
parse_json_data_list = json.loads(json_data_list)
parse_json_data_dict = json.loads(json_data_dict)
print(f'json_data_list的类型为: {type(json_data_list)}; parse_json_data_list的类型为: {type(parse_json_data_list)}')
print(f'json_data_dict的类型为: {type(json_data_dict)}; parse_json_data_dict的类型为: {type(parse_json_data_dict)}')
# 转为python类型之后,比如转为python字典,我们就可以使用dict相关方法进行数据的提取等操作
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/64893.html
json.load() load用于从一个文件中读取json数据,接收一个文件对象,返回一个python对象
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/64893.html
import json
# open函数返回一个文件对象,并将其赋给f
with open(r'test_json.txt', 'r') as f:
json_content = json.load(f)
print(json_content)
print(type(json_content))
主要用到两个函数:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/64893.html
- json.dumps
dumps为'dump string'的缩写,用于将python对象转为json格式的字符串文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/64893.html
import json
# python对象
data_list = [1, 2, 3]
data_dict = {"name": ["Alice", "Bob"], "age": [25, 30]}
# 转为json对象
json_data_list = json.dumps(data_list)
json_data_dict = json.dumps(data_dict)
print(f'data_list的类型为: {type(data_list)}; json_data_list的类型为: {type(json_data_list)}')
print(f'data_dict的类型为: {type(data_dict)}; json_data_dict的类型为: {type(json_data_dict)}')
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/64893.html
json.dump - dump用于将 python 对象转换为json格式,并将结果写入文件,它需要一个文件对象作为输出目标
import json
data_dict = {"name": ["Alice", "Bob"], "age": [25, 30]}
# 创建一个test_json.json文件(w: 文件不存在则创建)
with open(r'test_json.json', 'w') as f:
# indent: 该参数用来控制缩进 用来美化json使其有清晰的层次结构
json.dump(data_dict, f, indent=4)
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/64893.html 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/64893.html 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/64893.html 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/64893.htmlimport pandas as pd
from io import StringIO
# 读取JSON数据为DataFrame对象
json_data = '{"name": ["Alice", "Bob"], "age": [25, 30]}'
df = pd.read_json(StringIO(json_data))
df
import pandas as pd
# 直接读取json文件
data = pd.read_json(r'test_json.json')
data
import pandas as pd
data = pd.DataFrame(
{
'value': range(10),
'time': pd.date_range('2024-01-01', freq='D', periods=10),
'flag': list('abcdefghij')
}
)
data.to_json('test_to_json.json', indent=4)
import pandas as pd
data = pd.DataFrame(
{
'value': range(10),
'time': pd.date_range('2024-01-01', freq='D', periods=10),
'flag': list('abcdefghij')
}
)
data.to_json('test_to_json.json', indent=4, orient='records')
import pandas as pd
data = pd.DataFrame(
{
'value': range(10),
'time': pd.date_range('2024-01-01', freq='D', periods=10),
'flag': list('abcdefghij')
}
)
data['time'] = data['time'].astype(str)
data.to_json('test_to_json.json', indent=4, orient='records')