如何将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代码检查工具pylint 让你的python更规范
Sep 05 Python
linux系统使用python监测网络接口获取网络的输入输出
Jan 15 Python
Python批量更改文件名的实现方法
Oct 29 Python
Python 窗体(tkinter)按钮 位置实例
Jun 13 Python
Python3离线安装Requests模块问题
Oct 13 Python
关于Flask项目无法使用公网IP访问的解决方式
Nov 19 Python
Python各种扩展名区别点整理
Feb 27 Python
MAC平台基于Python Appium环境搭建过程图解
Aug 13 Python
Python实现8种常用抽样方法
Jun 27 Python
Python jiaba库的使用详解
Nov 23 Python
Python按顺序遍历并读取文件夹中文件
Apr 29 Python
python数据分析之单因素分析线性拟合及地理编码
Jun 25 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加密解密函数代码
2013/06/19 PHP
php除数取整示例
2014/04/24 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
2014/10/20 PHP
简单三步,搞掂内存泄漏
2007/03/10 Javascript
仿迅雷焦点广告效果(JQuery版)
2008/11/19 Javascript
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
JavaScript中的cacheStorage使用详解
2015/07/29 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
微信小程序 轮播图swiper详解及实例(源码下载)
2017/01/11 Javascript
原生js轮播特效
2017/05/18 Javascript
Nginx 配置多站点vhost 的方法
2018/01/07 Javascript
解析Json字符串的三种方法日常常用
2018/05/02 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
支付宝小程序tabbar底部导航
2018/11/06 Javascript
JS精确判断数据类型代码实例
2019/12/18 Javascript
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
使用python处理题库表格并转化为word形式的实现
2020/04/14 Python
Python中使用filter过滤列表的一个小技巧分享
2020/05/02 Python
HTML5拖放功能_动力节点Java学院整理
2017/07/13 HTML / CSS
美国婚戒购物网站:Anjays Designs
2017/06/28 全球购物
Topshop美国官网:英国快速时尚品牌
2019/05/16 全球购物
公司营业员的工作总结自我评价
2013/10/05 职场文书
工程总经理工作职责
2013/12/09 职场文书
六一节目主持词
2014/04/01 职场文书
供货协议书范本
2014/04/22 职场文书
放飞梦想演讲稿
2014/05/05 职场文书
2014大学校园光棍节活动策划书
2014/09/29 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
小学教师岗位职责
2015/04/02 职场文书
专职安全员岗位职责
2015/04/11 职场文书
刑事案件上诉状
2015/05/23 职场文书
红色电影观后感
2015/06/18 职场文书
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS