如何将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与js)两种实现
Feb 21 Python
python处理圆角图片、圆形图片的例子
Apr 25 Python
python使用正则表达式的search()函数实现指定位置搜索功能
Nov 10 Python
使用python opencv对目录下图片进行去重的方法
Jan 12 Python
python numpy之np.random的随机数函数使用介绍
Oct 06 Python
Django使用Celery加redis执行异步任务的实例内容
Feb 20 Python
django 实现简单的插入视频
Apr 07 Python
Python实现CAN报文转换工具教程
May 05 Python
Python Switch Case三种实现方法代码实例
Jun 18 Python
OpenCV 之按位运算举例解析
Jun 19 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
Sep 03 Python
解决virtualenv -p python3 venv报错的问题
Feb 05 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 和 MySQL 开发的 8 个技巧
2007/01/02 PHP
js和php邮箱地址验证的实现方法
2014/01/09 PHP
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
详解Laravel视图间共享数据与视图Composer
2016/08/04 PHP
IE8 引入跨站数据获取功能说明
2008/07/22 Javascript
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
2013/06/06 Javascript
GRID拖拽行的实例代码
2013/07/18 Javascript
JavaScript基础语法之js表达式
2016/06/07 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
Angular 4 指令快速入门教程
2017/06/07 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
关于jquery中attr()和prop()方法的区别
2018/05/28 jQuery
深入了解javascript 数组的sort方法
2018/06/01 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
利用H5api实现时钟的绘制(javascript)
2020/09/13 Javascript
python学习之编写查询ip程序
2016/02/27 Python
Python之py2exe打包工具详解
2017/06/14 Python
Python 3.7新功能之dataclass装饰器详解
2018/04/21 Python
Python版名片管理系统
2018/11/30 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
2019/12/10 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
Python集成开发工具Pycharm的安装和使用详解
2020/03/18 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
2020/07/21 Python
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
工作自我评价分享
2013/12/01 职场文书
部队党性分析材料
2014/02/16 职场文书
媒矿安全生产承诺书
2014/05/23 职场文书
员工离职感谢信
2015/01/22 职场文书
单位提档介绍信
2015/10/22 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书