如何将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编写一个简单的俄罗斯方块游戏的教程
Apr 03 Python
Python编程中装饰器的使用示例解析
Jun 20 Python
Python 16进制与中文相互转换的实现方法
Jul 09 Python
对pandas中两种数据类型Series和DataFrame的区别详解
Nov 12 Python
pycharm创建一个python包方法图解
Apr 10 Python
详解用python写一个抽奖程序
May 10 Python
浅析Python与Mongodb数据库之间的操作方法
Jul 01 Python
python打印n位数“水仙花数”(实例代码)
Dec 25 Python
python全局变量引用与修改过程解析
Jan 07 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
Apr 16 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
Jun 29 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
Jan 27 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的正则处理函数总结分析
2008/06/20 PHP
PHP中的函数嵌套层数限制分析
2011/06/13 PHP
深入PHP empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
thinkphp 验证码 的使用小结
2017/05/07 PHP
[IE&amp;FireFox兼容]JS对select操作
2007/01/07 Javascript
JavaScript访问样式表代码
2010/10/15 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
jquery实现仿新浪微博评论滚动效果
2015/08/06 Javascript
JavaScript中object和Object的区别(详解)
2017/02/27 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
2017/10/24 Javascript
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
2019/09/20 Javascript
[51:52]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
Python专用方法与迭代机制实例分析
2014/09/15 Python
python编写的最短路径算法
2015/03/25 Python
Python reduce()函数的用法小结
2017/11/15 Python
多个应用共存的Django配置方法
2018/05/30 Python
基于Python实现定时自动给微信好友发送天气预报
2018/10/25 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
2019/01/08 Python
python里运用私有属性和方法总结
2019/07/08 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
DOUGLAS波兰:在线销售香水和化妆品
2020/07/05 全球购物
机械绘图员岗位职责
2013/11/19 职场文书
集团公司总经理岗位职责
2013/12/20 职场文书
银行先进个人事迹材料
2014/05/11 职场文书
力学专业求职信
2014/07/23 职场文书
超市七夕促销活动方案
2014/08/28 职场文书
大学生学习计划书
2014/09/15 职场文书
2014小学年度工作总结
2014/12/20 职场文书
平遥古城导游词
2015/02/03 职场文书
Python序列化与反序列化相关知识总结
2021/06/08 Python
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript