如何将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 ValueError: invalid literal for int() with base 10 实用解决方法
Jun 21 Python
玩转python爬虫之爬取糗事百科段子
Feb 17 Python
Python文件夹与文件的相关操作(推荐)
Jul 25 Python
Python实现模拟浏览器请求及会话保持操作示例
Jul 30 Python
Python3.4解释器用法简单示例
Mar 22 Python
TensorFlow tf.nn.max_pool实现池化操作方式
Jan 04 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
Jan 07 Python
python动态文本进度条的实例代码
Jan 22 Python
python字符串下标与切片及使用方法
Feb 13 Python
python实现用户名密码校验
Mar 18 Python
python用TensorFlow做图像识别的实现
Apr 21 Python
OpenCV读取与写入图片的实现
Oct 13 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
yii框架builder、update、delete使用方法
2014/04/30 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
2014/05/07 PHP
php自定义hash函数实例
2015/05/05 PHP
PHP微信开发用Cache 解决数据缓存
2016/07/11 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
js确定对象类型方法
2012/03/30 Javascript
JavaScript中的作用域链和闭包
2012/06/30 Javascript
JS自动缩小超出大小的图片
2012/10/12 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
JS 弹出层 定位至屏幕居中示例
2014/05/21 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
2017/06/13 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
Vue利用History记录上一页面的数据方法实例
2018/11/02 Javascript
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
微信小程序实现canvas分享朋友圈海报
2020/06/21 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
用Python登录Gmail并发送Gmail邮件的教程
2015/04/17 Python
Python编程中对super函数的正确理解和用法解析
2016/07/02 Python
python 以16进制打印输出的方法
2018/07/09 Python
Python3 列表,数组,矩阵的相互转换的方法示例
2019/08/05 Python
python3 webp转gif格式的实现示例
2019/12/10 Python
Python 2种方法求某个范围内的所有素数(质数)
2020/01/31 Python
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
html5使用canvas实现弹幕功能示例
2017/09/11 HTML / CSS
美国Rue La La闪购网站:奢侈品、中高档品牌限时折扣
2016/10/19 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
领导失职检讨书
2014/02/24 职场文书
房产代理公证处委托书
2014/04/04 职场文书
跳高加油稿
2015/07/21 职场文书
JDBC连接的六步实例代码(与mysql连接)
2021/05/12 MySQL