欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python解析json文件

程序员文章站 2024-02-03 10:26:40
...

日常编程工作中,JSON是接口传递数据的默认格式,对json文件的解析是很常见的步骤。Python的第三方库JSON让解析json文件变得很简单。

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'>

总结:不管是dump还是load,带s的都是和字符串相关的,不带s的都是和文件相关的。