如何将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的轻便web框架Bottle
Apr 08 Python
Python2实现的LED大数字显示效果示例
Sep 04 Python
对python 判断数字是否小于0的方法详解
Jan 26 Python
Django 过滤器汇总及自定义过滤器使用详解
Jul 19 Python
Django实现跨域请求过程详解
Jul 25 Python
快速解决vue.js 模板和jinja 模板冲突的问题
Jul 26 Python
Django为窗体加上防机器人的验证码功能过程解析
Aug 14 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
Feb 25 Python
Python 批量读取文件中指定字符的实现
Mar 06 Python
python 基于selectors库实现文件上传与下载
Dec 31 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 11 Python
Python实现Telnet自动连接检测密码的示例
Apr 16 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 array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
js 匿名调用实现代码
2009/06/19 Javascript
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
2010/05/06 Javascript
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
为超链接加上disabled后的故事
2010/12/10 Javascript
js有序数组的连接问题
2013/10/01 Javascript
javascript判断office版本示例
2014/04/11 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
js监听input输入框值的实时变化实例
2017/01/26 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
2018/11/19 Javascript
bootstrap table.js动态填充单元格数据的多种方法
2019/07/18 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
[10:34]DOTA2上海特级锦标赛全纪录
2016/03/25 DOTA
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
2017/05/08 Python
Python随机函数random()使用方法小结
2018/04/29 Python
python抽取指定url页面的title方法
2018/05/11 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
2020/03/10 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
使用Python封装excel操作指南
2021/01/29 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
2021/02/16 Python
CSS书写规范、顺序和命名规则
2014/03/06 HTML / CSS
用html5实现语音搜索框的方法
2014/03/18 HTML / CSS
大都会艺术博物馆商店:The Met Store
2018/06/22 全球购物
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
2015/02/22 面试题
如何手工释放资源
2013/12/15 面试题
企业宣传口号
2014/06/12 职场文书
公安交警个人对照检查材料思想汇报
2014/10/01 职场文书
教师节班会主持词
2015/07/06 职场文书
python百行代码实现汉服圈图片爬取
2021/11/23 Python