如何将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 相关文章推荐
Tornado Web服务器多进程启动的2个方法
Aug 04 Python
Python中让MySQL查询结果返回字典类型的方法
Aug 22 Python
python中bisect模块用法实例
Sep 25 Python
利用Psyco提升Python运行速度
Dec 24 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
Jul 12 Python
numpy中以文本的方式存储以及读取数据方法
Jun 04 Python
cProfile Python性能分析工具使用详解
Jul 22 Python
Python networkx包的实现
Feb 14 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
Jun 01 Python
Python pip安装第三方库实现过程解析
Jul 09 Python
python 调用API接口 获取和解析 Json数据
Sep 28 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 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 addslashes 函数详细分析说明
2009/06/23 PHP
php中spl_autoload详解
2014/10/17 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
php获得网站访问统计信息类Compete API用法实例
2015/04/02 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
2010/06/11 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
JavaScript阻止浏览器返回按钮的方法
2015/03/18 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
2016/02/19 Javascript
JavaScript用JSONP跨域请求数据实例详解
2017/01/06 Javascript
jQuery动态生成不规则表格(前后端)
2017/02/21 Javascript
Nodejs之http的表单提交
2017/07/07 NodeJs
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
Angular8路由守卫原理和使用方法
2019/08/29 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
2021/03/01 Vue.js
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
2014/11/05 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
使用OpenCV校准鱼眼镜头的方法
2020/11/26 Python
大学生求职推荐信
2013/11/27 职场文书
应届大学生自荐信
2013/12/05 职场文书
应届护士求职信范文
2014/01/26 职场文书
学生上课说话检讨书
2014/10/25 职场文书
中小学生学籍证明
2014/10/25 职场文书
出差报告怎么写
2014/11/06 职场文书
工作犯错保证书
2015/05/11 职场文书
郭明义电影观后感
2015/06/08 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
python b站视频下载的五种版本
2021/05/27 Python
Java 关于String字符串原理上的问题
2022/04/07 Java/Android
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers