python读取json文件
正文
- 序列化和反序列化
- 对象深拷贝
一般而言,我们把 程序的各种类型数据对象 变成 表示该数据对象的 字节串 这个过程 称之为 序列化 。
而把 字节串转化为 程序中的数据对象 这个过程 称之为 反序列化
序列化
将数据对象序列化为 json格式的字符串,就可以使用该库里面的dumps函数,如下
import json historyTransactions = [ { 'time' : '20170101070311', # 交易时间 'amount' : '3088', # 交易金额 'productid' : '45454455555', # 货号 'productname' : 'iphone7' # 货名 }, { 'time' : '20170101050311', # 交易时间 'amount' : '18', # 交易金额 'productid' : '453455772955', # 货号 'productname' : '奥妙洗衣液' # 货名 } ] # dumps 方法将数据对象序列化为 json格式的字符串 jsonstr = json.dumps(historyTransactions) print(jsonstr)
输出结果
[{"time": "20170101070311", "amount": "3088", "productid": "45454455555", "productname": "iphone7"}, {"time": "20170101050311", "amount": "18", "productid": "453455772955", "productname": "\u5965\u5999\u6d17\u8863\u6db2"}]
json.dumps 方法发现将字符串中如果有非ascii码字符,比如中文‘奥妙洗衣液’, 缺省就用该字符的unicode数字来表示。
若不想显示为unicode,可以给参数 ensure_ascii 赋值为 False
json.dumps(historyTransactions,ensure_ascii=False,indent=4) # indent参数表示转换后缩进为4
改完后再运行下,结果就变成了这样
[ { "time": "20170101070311", "amount": "3088", "productid": "45454455555", "productname": "iphone7" }, { "time": "20170101050311", "amount": "18", "productid": "453455772955", "productname": "奥妙洗衣液" } ]
反序列化
import json jsonstr = '[{"time": "20170101070311", "amount": "3088",
"productid": "45454455555", "productname": "iphone7"},
{"time": "20170101050311", "amount": "18", "productid": "453455772955",
"productname": "\u5965\u5999\u6d17\u8863\u6db2"}]' translist = json.loads(jsonstr) print(translist) print(type(translist))
输出结果如下
[{'time': '20170101070311', 'amount': '3088', 'productid':
'45454455555', 'productname': 'iphone7'}, {'time': '20170101050311',
'amount': '18', 'productid': '453455772955', 'productname': '奥妙洗 衣液'}] <class 'list'>
对象深拷贝
team1 =[ { 'name':'乔丹', 'height':198 }, { 'name':"姚明', 'height':223 } ] # 这个方式不行,因为添加的仍然是team1的元素 team = [] for one in team1: team2.append(one) # team2.append({'name':one['name'],'height':one['height']}) # 可行但麻烦 team2[0]['name'] = '麦迪' print(team1[0]['name']) import json team2 = json.loads(dumps(team1)) # 利用json进行深拷贝
参考学习:https://www.byhy.net/tut/py/extra/json/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」