Python标准库实现json格式字符串与对象的互转
使用Python标准库: json 实现json格式字符串与Python对象的互转。
但注意,只有有效的json格式字符串才能够转换为Python对象。
- 字符串必须用双引号
- 在同一个对象中,所有的键必须是唯一的
- 最后一个元素后面不应有逗号
- 字符串中不应包含注释
- 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相关方法进行数据的提取等操作

-
json.load() -
load用于从一个文件中读取json数据,接收一个文件对象,返回一个python对象
-

import json# open函数返回一个文件对象,并将其赋给fwith open(r'test_json.txt', 'r') as f:json_content = json.load(f)print(json_content)print(type(json_content))
主要用到两个函数:
- json.dumps
-
dumps为'dump string'的缩写,用于将python对象转为json格式的字符串
-
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)}')

-
json.dump - dump用于将 python 对象转换为json格式,并将结果写入文件,它需要一个文件对象作为输出目标
import jsondata_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)

import pandas as pdfrom 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 pddata = 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 pddata = 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 pddata = 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')

THE END






