json格式数据和python数据通过什么方法转换的,python与json文件交互
本文主要介绍使用python实现JSON文档和Python对象之间的转换。通过对一个JSON文档映射到Python对象的问题展开,介绍了主题内容,有需要的朋友可以参考一下。
00-1010 1.将JSON文档映射到Python对象1。方法二。将一个Python对象转换成相应的JSON string interview 2。将对象列表转换为JSON数组以汇总前言:
如何将一个JSON文档映射为Python对象主要包括一下三个部分:
考点:载荷函数的使用。面试题:如何将JSON文档映射到Python对象?分析
目录
一、将一个JSON文档映射为Python对象
供我们读取的JSON文件是test.json,文件内容如下:
{
姓名 : 孤独人,
年龄: 18,
身高 : 130
}
首先,我们可以通过json模块的loads()方法将JSON文档转为Python字典类型:
#编码=utf-8
导入json
with open(test.json , r ,encoding=utf-8) as f:
jsonStr=f.read()
产品=json.loads(jsonStr)
打印(类型(产品))
打印(产品[名称])
我们在loads()方法里使用对象钩子即可实现将一个JSON文档映射为Python对象。分析思路:
本质上,我们用对象钩子做了两步:首先通过loads()方法将JSON文档转换成dict对象,然后在Product对象的同时创建dict对象——在Product对象的构造函数_ __init__()方法中,将dict对象作为参数传入第二个参数,即D。而这个D其实就是包含这个JSON文档的dictionary对象。我们在__init__()方法中给__dict__赋值D(相当于你一个一个写的类中的属性名=属性值)。这将把字典中的键和值映射到产品对象中的属性和属性值。#编码=utf-8
导入json
类别产品:
def __init__(self,d):
自我。__字典__=d
with open(test.json , r ,encoding=utf-8) as f:
jsonStr=f.read()
product=json.loads(jsonStr,object_hook=Product)
打印(类型(产品))
# print(product[name]) #这个不行~
打印(产品名称)
第一种方法
也使用了对象钩子,但与第一种方法不同的是,对象钩子不再指定类,而是指定一个转换函数,通过该函数返回对象。
#编码=utf-8
导入json
类别产品:
def __init__(self,d):
自我。__字典__=d
用open(test.json , r ,encoding=utf-8 )作为
f:
jsonStr = f.read()
def json2Product(d):
return Product(d)
product1 = json.loads(jsonStr, object_hook=json2Product)
print(type(product1))
print(product1.name)
小结:
json模块的loads函数可以装载JSON文档,并将其转换为JSON对象。关键需要通过object_hook参数指定钩子对象,然后在类的构造方法中将传入的JSON对象赋给内部变量__init__
。
二、将一个Python对象转换为对应的JSON字符串
包括以下三点考点:
dumps函数的用法。
面试题
1.面试题一:将一个Python对象转换为对应的JSON字符串。
2.面试题二:将对象列表转换为JSON数组。
解析:面试题一 之 将一个Python对象转换为对应的JSON字符串:
使用dumps()函数,关键点是使用转换函数~
# coding=utf-8
面试题二 之 将对象列表转换为JSON数组
为了实现这一功能,我们需要一个对象列表,所以我们将JSON文档(如下test.json文件)先转为对象列表(上一题中我们已经知道如何操作了~),然后再给它转为JSON数组。
[
# coding=utf-8
上面截图可以看出来我们确实已经将JSON文档转为对象列表了~ 下面开始解题:
# coding=utf-8
总结
json模块的dumps函数用于将对象转换为JSON字符串。
通过default参数指定一个转换函数,可以在该函数中提取对象的属性值,并生成JSON对象,最后dumps负责将转换函数返回的JSON对象转换为JSON字符串。
到此这篇关于利用python实现JSON文档与Python对象互相转换的文章就介绍到这了,更多相关JSON映射内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。