如何将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程序实例(通讯录)
Nov 29 Python
python列表操作实例
Jan 14 Python
python中self原理实例分析
Apr 30 Python
详解 Python 读写XML文件的实例
Aug 02 Python
答题辅助python代码实现
Jan 16 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
May 04 Python
django框架模板中定义变量(set variable in django template)的方法分析
Jun 24 Python
Pytorch中index_select() 函数的实现理解
Nov 19 Python
基于Python中的yield表达式介绍
Nov 19 Python
Python利用PyPDF2库获取PDF文件总页码实例
Apr 03 Python
python热力图实现简单方法
Jan 29 Python
Python - 10行代码集2000张美女图
May 23 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 基础教程(三)
2006/10/09 PHP
php中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
用ADODB.Stream转换
2007/01/22 Javascript
Js 本页面传值实现代码
2009/05/17 Javascript
js 使用form表单select类实现级联菜单效果
2012/12/19 Javascript
jquery统计复选框选中示例
2013/11/05 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
2013/12/12 Javascript
NodeJS学习笔记之Connect中间件应用实例
2015/01/27 NodeJs
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
JavaScript函数apply()和call()用法与异同分析
2018/08/10 Javascript
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
原生js+canvas实现下雪效果
2020/08/02 Javascript
JS+css3实现幻灯片轮播图
2020/08/14 Javascript
[29:10]Ti4 冒泡赛第二天 NEWBEE vs Titan 3
2014/07/15 DOTA
Python字符串转换成浮点数函数分享
2015/07/24 Python
实例讲解Python中SocketServer模块处理网络请求的用法
2016/06/28 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
对Python 语音识别框架详解
2018/12/24 Python
对Python w和w+权限的区别详解
2019/01/23 Python
python 搜索大文件的实例代码
2019/07/08 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
大学自主招生自荐信范文
2014/02/26 职场文书
乡镇领导班子四风对照检查材料
2014/09/27 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书