日常编程工作中,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
# 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’>

# json文件转换成字典后,我们就可以向字典一样取数据了
version = jsondata["version"]
print('version:',version)
netypes = jsondata["modelinfo"][0]["netypes"]
print('netypes: ',netypes)

输出:
version: 1.0
netypes: [‘ITBBU’]

2 将字典转换成json 文件

# 将字典写入到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)  #  如果ensure_ascii 为false,则返回值可以包含非ascii值

3 将json字符串转换成字典

json_str = '{"test": [1, 2, "English", "中文"], "date": "2020/8/20 12:12:10"}'
print('这是转换后的数据:',json.loads(json_str))   # 注意是loads,有s
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))   # <class 'list'>
    print(py)   # [1, 2.0, 'string', True]
    json_ob = json.dumps(py_ob)
    print(type(json_ob))   # <class 'str'>
    print(json_ob)    # [1, 2.0, "string", true]
    py_ob2 = json.loads(json_ob,encoding='utf-8')
    print(type(py_ob2))   # <class 'list'>
    print(py_ob2)   # [1, 2.0, 'string', True]

输出:
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、jsonjsonpath包解析json思路 (1)re:正则表达式,通过json的形式对症下药,写表达式去解析json; (2)json: 通过json中的json.loads()方法,将str类型转为dict类型,运用python字典的数据结构特点去解析json; (3)jsonpath:对比与json包,jsonpath可以根据路径去解析json,比较适合用来解析json中带“[ ]”的数据。 2、三种方式的json解析案例 #json数据样式,本文采用带[]的数据样式 什么是JSONJSON或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