如何将json数据转换为python数据


Posted in Python onSeptember 04, 2020

JSON对象是javascript object即javascript中的对象,是一种通用的格式,格式严格,不支持备注。

JSON文本和JSON对象的区别:

  • JSON文本是符合JSON格式的文本,实际上是一个字符串
  • JSON对象是内存中一个对象,拥有属性和方法,可以通过对象获取其中的参数信息

Python中我们一般提到JSON对象指的是字典

Python的字典的格式和JSON格式,稍有不同:

  • 字典中的引号支持单引号和双引号,JSON格式只支持双引号
  • 字典中的True/False首字母大写,JSON格式为true/false
  • 字典中的空值为None, JSON格式为null

json 是数据存储和交换文本信息的语法

javaScript对象表示法

用于数据传递

json中的数据格式 python中的数据
数字 整型 浮点数
字符串 字符串
布尔值 true false True False
数组 列表。元祖
对象 字典
null None

常见的json数据格式

{
code:200,
values:[
{"name":'lal','age':20}]
}

{} josn数据对应json对象

[] josn数组

代码如下

import json
age = 10
#dumps把数据转化为json语法中的数值数据
json_data = json.dumps(age)
print(json_data)

name = '橙子'
json_dta =json.dumps(name)
print(json_data)

person ={"chinese":99}
json_data =json.dumps(person)
print(json_data)



#在python中可自定义类型 自定义的类型 在json中没有对应的数据格式
#需要制定编码规则 通过编码规则 将自定义类型的数据转换为json可识别的数据
class Person():
  def __init__(self,name):
    self.name = name
  def __str__(self):
    return f"Person(name={self.name})"
  #__repr__通过容器调用对象调用__repr__
  #__str__当打印对象时输出设定的格式信息
  __repr__ =__str__

p = Person("橙子")
print(p)
print(type(p))#<class '__main__.Person'>
#在json中无对应数据

#存储Person类型的数据-需获取json可识别数据格式
#方式1
#对象__dict__获取对象的特征信息以字典形式存储
json_data = json.dumps(p.__dict__)
print(json_data)#{"name": "\u6a59\u5b50"}
#本质上存储的是字典

#loads解析为json数据
python_data =json.loads(json_data)
print(python_data)

#对应对象为Person对象 需要根据数据信息创建对象
p = Person(python_data["name"])
print(p,type(p))#Person(name=橙子) <class '__main__.Person'>

#方法二存储时设置编码规则 存的是指定的编码规则数据
#获取的时候要对应有一个解码规则 在根据数据解析成对象
#对以上操作封装
#PersonEncoder编码
class PersonEncoder(json.JSONEncoder):
  #重写方法
  #这个方法在dumps时 内部自动调用
  #子类重写父类的方法 子类对党调用时 只能调用重写 因为会吧父类方法覆盖
  def default(self, o):
    #把规则写出来
    #o 表示要进行json转换的对象
    return o.__dict__
P =Person('橙子2')
#CLS制定编码规则
#对象__dict__获取对象的特征信息以字典形式存储
json_data =json.dumps(P,cls=PersonEncoder)
print(json_data)#{"name": "\u6a59\u5b502"}

#解析JSONDecoder
class PersonDecoder(json.JSONDecoder):
  def __init__(self):
    #指定解码规则
    #object_hook对象挂钩-对象解析-接受的是一个函数
    super().__init__(object_hook=self.to_python_obj)

  def to_python_obj(self,d):
    #d接受的是字典,当前制定的转化为json对象的数据格式
    return Person(d['name'])

#解析操作
python_data =json.loads(json_data,cls=PersonDecoder)
print(python_data)#Person(name=橙子2)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用socket远程连接错误处理方法
Apr 29 Python
python数据预处理之将类别数据转换为数值的方法
Jul 05 Python
django静态文件加载的方法
May 20 Python
python得到windows自启动列表的方法
Oct 14 Python
Python实现的特征提取操作示例
Dec 03 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
Jan 30 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
Pytorch释放显存占用方式
Jan 13 Python
终于搞懂了Keras中multiloss的对应关系介绍
Jun 22 Python
学python最电脑配置有要求么
Jul 05 Python
Matplotlib中rcParams使用方法
Jan 05 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
Sep 04 #Python
Python读取Excel一列并计算所有对象出现次数的方法
Sep 04 #Python
学习Python需要哪些工具
Sep 04 #Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
Sep 04 #Python
Python程序慢的重要原因
Sep 04 #Python
利用Python实现朋友圈中的九宫格图片效果
Sep 03 #Python
详解pytorch中squeeze()和unsqueeze()函数介绍
Sep 03 #Python
You might like
小偷PHP+Html+缓存
2006/11/25 PHP
简单的PHP多图上传小程序代码
2011/07/17 PHP
php模拟js函数unescape的函数代码
2012/10/20 PHP
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
2014/06/30 Javascript
js实现在同一窗口浏览图片
2014/09/17 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
hovertree插件实现二级树形菜单(简单实用)
2016/12/28 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
2017/09/18 Javascript
vue webuploader 文件上传组件开发
2017/09/23 Javascript
react-router-dom 嵌套路由的实现
2020/05/02 Javascript
详解JS函数防抖
2020/06/05 Javascript
JS原型对象操作实例分析
2020/06/06 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
[02:49]2018DOTA2亚洲邀请赛主赛事决赛日战况回顾 Mineski鏖战5局夺得辉耀
2018/04/10 DOTA
python和pyqt实现360的CLable控件
2014/02/21 Python
python的迭代器与生成器实例详解
2014/07/16 Python
python判断windows系统是32位还是64位的方法
2015/05/11 Python
python之PyMongo使用总结
2017/05/26 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
python中报错&quot;json.decoder.JSONDecodeError: Expecting value:&quot;的解决
2019/04/29 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
2019/06/27 Python
python3通过qq邮箱发送邮件以及附件
2020/05/20 Python
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
学校安全教育制度
2014/01/31 职场文书
公司端午节活动方案
2014/02/04 职场文书
幼儿园家长评语
2014/02/10 职场文书
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android
Python+pyaudio实现音频控制示例详解
2022/07/23 Python