天天热文:Python中Json使用示例详解
目录
Python Json使用1.dict 转成 json (json.dumps(dict))2.json 转 dict (json.loads(jsonstr))3. 类对象转 json (dict属性/提供default=方法)3.1 错误使用3.2 使用类对象 dict 属性3.3 提供一个 convert2json 方法4.json 转 类对象 (json.loads(jsonstr,object_hook=..))5. dict/对象 转为 json文件 (json.dump(student,f))6. json文件转 dict /对象 (json.load)小疑问总结Python Json使用
本篇主要介绍一下 python 中 json的使用 如何把 dict转成json 、object 转成json 、以及json转成对象 等等。。
(资料图)
json是非常常用的一种数据格式,比如在前后端分离的 web开发中,返回给前端 通常都会使用json ,那么来看看 python 中如何玩转json
1.dict 转成 json (json.dumps(dict))
注意: ensure_ascii=False 否则中文乱码
import json student = { "name": "johnny", "age": 27, "address": "无锡" } print(json.dumps(student, ensure_ascii=False)) # {"name": "johnny", "age": 27, "address": "无锡"} json
2.json 转 dict (json.loads(jsonstr))
import json json_student = "{"name": "johnny", "age": 27, "address": "无锡"}" print(json.loads(json_student)) # {"name": "johnny", "age": 27, "address": "无锡"} 字典dict
3. 类对象转 json (dict属性/提供default=方法)
3.1 错误使用
注意:json.dumps() 不支持 直接把 类对象放进去!!! 会报错 Student is not JSON serializable
import json class Student: def __init__(self, name, age): self.name = name self.age = age student = Student("candy", "30") #错误使用!!! print(json.dumps(student)) 报错!!! TypeError: Object of type Student is not JSON serializable
3.2 使用类对象 dict 属性
#正确使用!!! print(json.dumps(student.__dict__))) #可以使用 类对象的 __dict__ 属性 #{"name": "candy", "age": "30"}
3.3 提供一个 convert2json 方法
default=指定方法
class Student: def __init__(self, name, age): self.name = name self.age = age @staticmethod def conver2json(self): return { "name": self.name, "age": self.age } #通过自己写一个 conver2json方法 去手动转化一下 把 类对象转成json print(json.dumps(student,default=Student.conver2json))
4.json 转 类对象 (json.loads(jsonstr,object_hook=..))
注意:json.loads 默认只会转成dict,需要自己提供方法 把dict 转成 类对象
import json class Student: def __init__(self, name, age): self.name = name self.age = age @staticmethod def conver2json(self): return { "name": self.name, "age": self.age } @staticmethod def convert2object(dict): return Student(dict["name"],dict["age"]) json_student = "{"name": "johnny", "age": 27, "address": "无锡"}" print(json.loads(json_student,object_hook=Student.convert2object)) #<__main__.Student
5. dict/对象 转为 json文件 (json.dump(student,f))
注意 dump 还是 只能接收 dict ,如果要把 对象写到json中 需要先把对象 转成 dict ,可以通过 ——dict——属性
student = { "name": "johnny", "age": 27, "address": "无锡" } with open("student.json","w") as f: json.dump(student,f,ensure_ascii=False)
6. json文件转 dict /对象 (json.load)
with open("student.json","r") as f: print(json.load(f))
小疑问
为什么:转成json 后 name 是一个数组呢? 因为 self.name = name, 后面有一个 逗号,。。。 会把这个name当成元组 ,元组转成 json 就是 数组!!!
class Student: def __init__(self, name, age): self.name = name, #这里!!!不能有 逗号。。 self.age = age student = Student("candy", "30") print(json.dumps(student.__dict__)) #猜猜它的打印是什么 #{"name": ["candy"], "age": "30"}
总结
json.dumps() 只支持 dict转json 如果是 class 对象 需要 通过 dict属性或者提供default= conver2json 方法json.dump() 是写入 文件中json.loads() 只支持把 json str转成 dict ,如果要转成 class 对象 则需要提供 object_hook=convert2object方法json.load()/ 是从文件中读取 jsonstr 到 dict很简单 注意一下 class 和 json 的相互转化即可
参考:https://www.jb51.net/article/256548.htm
到此这篇关于Python中Json使用详解的文章就介绍到这了,更多相关PythonJson使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 2充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 3好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 4名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 5亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 6京东绿色建材线上平台上线 新增用户70%来自下沉市场
- 7网红淘品牌“七格格”chuu在北京又开一家店 潮人新宠chuu能红多久
- 8市场竞争加剧,有车企因经营不善出现破产、退网、退市
- 9北京市市场监管局为企业纾困减负保护经济韧性
- 10市场监管总局发布限制商品过度包装标准和第1号修改单