赞
踩
1)json的key只能是字符串,dict的key可以是任何可hash的对象,例如:字符串、数字、元组等;
2)字典是一种数据结构,json是一种数据格式;字典有很多内置函数,有多种调用方法,而json是数据打包的一种格式,并不像字典具备操作性;
3)json的字符串强制用双引号,dict的字符串可以用单引号、双引号;
一般而言,我们会把json转化为python中的字典或者列表,再对其进行操作。
带s的都是和字符串相关的,不带s的都是和文件相关的。
import json
dic = {'name': 'xiaoming', 'age': 29}
json_str = json.dumps(dic)#返回json字符串
print(json_str)
print(type(json_str))
#结果
{"name": "xiaoming", "age": 29}
<class 'str'>
import json
json_str ='{"id":"09", "name": "Nitin", "department":"Finance"}'
# Convert string to Python dict
dic = json.loads(json_str)
print(dic)
print(type(dic))
#结果
{'id': '09', 'name': 'Nitin', 'department': 'Finance'}
<class 'dict'>
import json
with open('test.json') as f:
a = json.load(f)
print(a)
print(type(a))
#结果
{'id': '09', 'name': 'Nitin', 'department': 'Finance'}
<class 'dict'>
import json
dic ={
"name" : "xiaoming",
"age" : 20,
"phonenumber" : "15555555555"
}
with open("test2.json", "w") as outfile:
json.dump(dic, outfile)
#读取json文件
import pandas as pd
import json
with open('results.json') as f:
results = json.load(f)
#读取相应的字段
FIELDS = ["key", "fields.summary", "fields.issuetype.name", "fields.status.name", "fields.status.statusCategory.name"]
df = pd.json_normalize(results["issues"])
df[FIELDS]
# 使用路径而不是直接用results["issues"]
pd.json_normalize(results, record_path="issues")[FIELDS]
# 自定义分隔符:用 "-" 替换默认的 "."
#使用sep参数自定义嵌套结构连接的分隔符
FIELDS = ["key", "fields-summary", "fields-issuetype-name", "fields-status-name", "fields-status-statusCategory-name"]
pd.json_normalize(results["issues"], sep = "-")[FIELDS]
#控制递归
#如果不想递归到每个子对象,可以使用max_level参数控制深度。在这种情况下,由于statusCategory.name字段位于JSON对象的第4级,因此不会包含在结果DataFrame中。
# 只深入到嵌套第二级
pd.json_normalize(results, record_path="issues", max_level = 2)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。