如何将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实现的ini文件操作类分享
Nov 20 Python
Python守护进程用法实例分析
Jun 04 Python
python字典基本操作实例分析
Jul 11 Python
Python找出9个连续的空闲端口
Feb 01 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
python爬取各类文档方法归类汇总
Mar 22 Python
对python:循环定义多个变量的实例详解
Jan 20 Python
Python 给屏幕打印信息加上颜色的实现方法
Apr 24 Python
python tkinter窗口最大化的实现
Jul 15 Python
django框架模板语言使用方法详解
Jul 18 Python
python实现两个文件夹的同步
Aug 29 Python
Python编译成.so文件进行加密后调用的实现
Dec 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
人大复印资料处理程序_补充篇
2006/10/09 PHP
PHP 读取和编写 XML
2014/11/19 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
CakePHP框架Session设置方法分析
2017/02/23 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
jQuery照片伸缩效果不影响其他元素的布局
2014/05/09 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
JavaScript中对象property的读取和写入方法介绍
2014/12/30 Javascript
浅析AngularJS中的生命周期和延迟处理
2015/06/18 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
利用Javascript实现简单的转盘抽奖
2017/02/13 Javascript
canvas红包照片实例分享
2017/02/28 Javascript
详解在 Angular 项目中添加 clean-blog 模板
2017/07/04 Javascript
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
[04:13]2018国际邀请赛典藏宝瓶Ⅱ饰品一览
2018/07/21 DOTA
详解Django通用视图中的函数包装
2015/07/21 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
python 输出所有大小写字母的方法
2019/01/02 Python
详解python:time模块用法
2019/03/25 Python
python能做哪方面的工作
2020/06/15 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
2020/07/30 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
毕业生物理教师求职信
2013/10/17 职场文书
毕业自我鉴定怎么写
2014/03/25 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
岗位安全生产责任书
2014/07/28 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL