如何将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笔记(叁)继续学习
Oct 24 Python
Python 实现一个颜色色值转换的小工具
Dec 06 Python
Python使用plotly绘制数据图表的方法
Jul 18 Python
python批量替换页眉页脚实例代码
Jan 22 Python
Python爬虫将爬取的图片写入world文档的方法
Nov 07 Python
django 外键model的互相读取方法
Dec 15 Python
Python实现分段线性插值
Dec 17 Python
Pyqt5实现英文学习词典
Jun 24 Python
基于Python实现签到脚本过程解析
Oct 25 Python
python中的subprocess.Popen()使用详解
Dec 25 Python
python的netCDF4批量处理NC格式文件的操作方法
Mar 21 Python
python 离散点图画法的实现
Apr 01 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 magic quotes的详解
2013/06/17 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
详解Yii2高级版引入bootstrap.js的一个办法
2017/03/21 PHP
服务器安全设置的几个注册表设置
2007/07/28 Javascript
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
js判断鼠标左、中、右键哪个被点击的方法
2015/01/27 Javascript
JQuery实现左右滚动菜单特效
2015/09/28 Javascript
JavaScript的React框架中的JSX语法学习入门教程
2016/03/05 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
AngularJS入门教程引导程序
2016/08/18 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
jQuery ready()和onload的加载耗时分析
2016/09/08 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
2017/03/06 Javascript
JS简单实现自定义右键菜单实例
2017/05/31 Javascript
详解用node.js实现简单的反向代理
2017/06/26 Javascript
深入解析Vue 组件命名那些事
2017/07/18 Javascript
vue.js默认路由不加载linkActiveClass问题的解决方法
2017/12/11 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
详解vue挂载到dom上会发生什么
2019/01/20 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
Python星号*与**用法分析
2018/02/02 Python
python3爬虫怎样构建请求header
2018/12/23 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
Python变量格式化输出实现原理解析
2020/08/06 Python
Python eval函数介绍及用法
2020/11/09 Python
Python: glob匹配文件的操作
2020/12/11 Python
会计专业毕业自荐书范文
2014/02/08 职场文书
安全承诺书范文
2014/03/26 职场文书
个人贷款承诺书
2014/03/28 职场文书
公司证明怎么写
2014/09/22 职场文书
亮剑观后感600字
2015/06/05 职场文书
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫
Nginx实现负载均衡的项目实践
2022/03/18 Servers
Windows 64位 安装 mysql 8.0.28 图文教程
2022/04/19 MySQL