日常编程工作中,JSON是接口传递数据的默认格式,对json文件的解析是很常见的步骤。Python的第三方库JSON让解析json文件变得很简单。
在编写接口传递数据时,往往需要使用JSON对数据进行封装。python和json数据类型的转换,看作为编码与解码。
JSON 函数
使用 JSON 函数需要导入 json 库:import json。
函数
|
描述
|
json.dumps
|
将 Python 对象编码成 JSON 字符串-转换为string (易传输)
|
json.dump
|
将dict类型转换为json字符串格式,写入到文件 (易存储)
|
json.loads
|
针对内存对象将已编码的 JSON 字符串解码为 Python
|
json.load
|
针对文件句柄,将json格式的字符转换为dict,从文件中读取 (将string转换为dict)
|
json格式与python格式的对应
Python
|
JSON
|
dict
|
object
|
list, tuple
|
array
|
str
|
string
|
int, float
|
number
|
True
|
true
|
False
|
false
|
None
|
null
|
1,读取json文件
json文件内容本质上字符串,当我们拿到json文件后只有转换成字典才方便使用,方便获取需要的字段;
import json
"version": "1.0",
"modelinfo": [
"versionid": "V1",
"netypes": ["ITBBU"],
"subtypes": ["NR"]
{'version': '1.0',
'modelinfo': [{'versionid': 'V1', 'netypes': ['ITBBU'], 'subtypes': ['NR']}]}
jsonpath = "E:/temp_files/test.json"
with open(jsonpath, 'r', encoding='utf-8') as f:
jsondata = json.load(f)
print('jsondata 数据类型:',type(jsondata))
输出:
jsondata 数据类型: <class ‘dict’>
version = jsondata["version"]
print('version:',version)
netypes = jsondata["modelinfo"][0]["netypes"]
print('netypes: ',netypes)
输出:
version: 1.0
netypes: [‘ITBBU’]
2 将字典转换成json 文件
newdict = {"test": [1,2,"English","中文"],"date": "2020/8/20 12:12:10"}
with open(jsonpath, 'a', encoding='utf-8') as f:
json.dump(newdict, f, ensure_ascii=False)
3 将json字符串转换成字典
json_str = '{"test": [1, 2, "English", "中文"], "date": "2020/8/20 12:12:10"}'
print('这是转换后的数据:',json.loads(json_str))
print('这是转换后的数据类型:',type(json.loads(json_str)))
这是转换后的数据: {'test': [1, 2, 'English', '中文'], 'date': '2020/8/20 12:12:10'}
这是转换后的数据类型: <class 'dict'>
4 将字典转换成json字符串
dicts = {
"key1": "asdf",
"key2": "jkl"
print('这是将字典转换之后的数据:',json.dumps(dicts,ensure_ascii=False))
print('这是将字典转换之后的数据类型:',type(json.dumps(dicts,ensure_ascii=False)))
这是将字典转换之后的数据: {"key1": "asdf", "key2": "jkl"}
这是将字典转换之后的数据类型: <class 'str'>
5 虽然字典是最常见的类型,但是其他数据类型也是可以的
import json
print("start to working....")
py_ob = [1, 2.0, "string", True]
jsonpath = "E:/temp_files/test2.json"
with open(jsonpath,'w',encoding='utf-8') as f:
json.dump(py_ob,f,ensure_ascii=False)
with open(jsonpath,'r',encoding='utf-8') as f2:
py = json.load(f2)
print(type(py))
print(py)
json_ob = json.dumps(py_ob)
print(type(json_ob))
print(json_ob)
py_ob2 = json.loads(json_ob,encoding='utf-8')
print(type(py_ob2))
print(py_ob2)
输出:
start to working…
<class ‘list’>
[1, 2.0, ‘string’, True]
<class ‘str’>
[1, 2.0, “string”, true]
<class ‘list’>
[1, 2.0, ‘string’, True]
总结:不管是dump还是load,带s的都是和字符串相关的,不带s的都是和文件相关的。
参考:https://www.cnblogs.com/jfl-xx/p/7992985.html
https://www.runoob.com/python/python-json.html
1、运用re、json、jsonpath包解析json思路
(1)re:正则表达式,通过json的形式对症下药,写表达式去解析json;
(2)json: 通过json中的json.loads()方法,将str类型转为dict类型,运用python字典的数据结构特点去解析json;
(3)jsonpath:对比与json包,jsonpath可以根据路径去解析json,比较适合用来解析json中带“[ ]”的数据。
2、三种方式的json解析案例
#json数据样式,本文采用带[]的数据样式
什么是JSON?
JSON或JavaScript Object Notation,是一种使用文本存储数据对象的格式。换句话说,它是一种数据结构,将对象用文本形式表示出来。尽管它来源自JavaScript,但它已成为传输对象的实际标准。
大多....
json 库可以自字符串或文件中解析JSON。 该库解析JSON后将其转为Python字典或者列表。它也可以转换Python字典或列表为JSON字符串。解析JSON
创建下面包含JSON数据的字符串json_string = ‘{“first_name”: “Guido”, “last_name”:“Rossum”}’
它可以被这样解析:import json
parsed_json = json.loads(json_string)
然后它可以像一个常规的字典那样使用:print(parsed_json[
1.什么是JSON
维基百科中的定义: JSON(JavaScriptObjectNotation,JavaScript对象表示法)是一种由道格拉斯·克罗克福特构想和设计、轻量级的资料交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。尽管JSON是JavaScript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。
一个数据示例:
"firstName": "Micheal",
"lastName":..
提示:所谓类文件对象指那些具有read()或者 write()方法的对象,例如,f = open('a.txt','r'),其中的f有read()方法,所以f就是类文件对象。
在json的编解码过程中,python 的原始类型与JSON类型会相互转换,具体的转化对照如下:
Python 编码为 JS..
json处理模块的主要任务,是将一个JSON对象,转换成Python数据类型数据进行处理,或者反之,将Python数据类型数据,转换成JSON对象(字符串流),在不同的模块或者系统间传输。
文章目录Python解析JSON对象1. JSON数据格式特点2. 常用方法总结3. 系列化和反系列化3.1 系列化3.2 反系列化
1. JSON数据格式特点
对象表示为键值对
数据由逗号分隔
关于这个问题,倒不是很难,群里提出了三个方法,第一个是才哥说的pd处理或者正则表达式,第二个是小编自己提出的json处理,第三个是【成都-IT技术支持-小王】提出的jsonpath,总之方法很多,
JSON(JavaScript Object Natation)是一种轻量级的数据交换格式,其基于ECMAScript的一个子集。Python中提供了json模块来对JSON数据进行编码和解码。
json模块包含以下两个函数:
json.dumps():对数据进行编码
jsonloads():对数据进行解码
import json
data1 = {
'id': '001',
'name': '李华',
'date': '20220115'
json_str = j