如何将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中replace方法实例分析
Aug 20 Python
Python下的subprocess模块的入门指引
Apr 16 Python
Python提取Linux内核源代码的目录结构实现方法
Jun 24 Python
python实现下载文件的三种方法
Feb 09 Python
python字典DICT类型合并详解
Aug 17 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
Mar 23 Python
Python实现判断并移除列表指定位置元素的方法
Apr 13 Python
浅谈利用numpy对矩阵进行归一化处理的方法
Jul 11 Python
Python常见内置高效率函数用法示例
Jul 31 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
Apr 15 Python
jupyter note 实现将数据保存为word
Apr 14 Python
python opencv实现简易画图板
Aug 27 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调用Oracle存储过程
2006/10/09 PHP
PHP用户指南-cookies部分
2006/10/09 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
js function定义函数使用心得
2010/04/15 Javascript
JS 自定义带默认值的函数
2011/07/21 Javascript
javascript预加载图片、css、js的方法示例介绍
2013/10/14 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
原生js实现自由拖拽弹窗代码demo
2016/06/29 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
vue与原生app的对接交互的方法(混合开发)
2018/11/28 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
详解Python中for循环的使用方法
2015/05/14 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
JavaScript中的模拟事件和自定义事件实例分析
2018/07/27 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
Python中zip()函数的简单用法举例
2019/09/02 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
python标准库OS模块函数列表与实例全解
2020/03/10 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
Python如何急速下载第三方库详解
2020/11/02 Python
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
如何保障Web服务器安全
2014/05/05 面试题
网上商城创业计划书范文
2014/01/31 职场文书
2014年父亲节活动方案
2014/03/06 职场文书
监察建议书范文
2014/03/12 职场文书
竞选体育委员演讲稿
2014/04/26 职场文书
2015年教师业务工作总结
2015/05/26 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
MySQL数据库表约束讲解
2022/06/21 MySQL