欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

python3 json_Python3 解析复杂结构的 json

发布时间:2025/3/15 27 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python3 json_Python3 解析复杂结构的 json 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

导读

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。

它基于ECMAScript的一个子集,易于阅读和编写。

Python3 中可以使用json模块来对JSON数据进行编码。

d1 = [{"id" : 1,"name" : "Number1","age" : 11},{"id" : 2,"name" : "Number2","age" : 22},{"id" : "3","name" : "Number3","age" : 33}]

d2 = {"persons" :[{"id" : 1,"name" : "Number1","age" : 11},{"id" : "2","name" : "Number2","age" : 22},{"id" : 3,"name" : "Number3","age" : 33}]}

d3 = {"code" : 200, "persons" :[{"id" : 1,"name" : "Number1","age" : 11},{"id" : True,"name" : "Number2","age" : 22},{"id" : 3,"name" : "Number3","age" : 33}]}

## 获取 json 数组或json 对象的 key 列表

def get_json_keys(json_str,json_keys = []):

if isinstance(json_str,list):

for json_obj in json_str:

for key in json_obj.keys():

if key not in json_keys:

json_keys.append(key)

elif isinstance(json_str,dict):

for key in json_str.keys():

if key not in json_keys:

json_keys.append(key)

return json_keys

## 将json 数组中相同的 key - value值进行合并

def get_key_values(json_str,json_keys):

target_json = {}

for key in json_keys:

key_values = []

for json_obj in json_str:

if isinstance(json_obj,dict):

key_values.append(json_obj[key])

target_json[key] = key_values

return target_json

## 主方法

def analyse_json(json_str):

target_json = {}

json_keys = []

if isinstance(json_str,list):

json_keys = get_json_keys(json_str,json_keys)

target_json = get_key_values(json_str,json_keys)

elif isinstance(json_str,dict):

json_keys = get_json_keys(json_str,json_keys)

for key in json_keys:

if not isinstance(json_str[key],list) and not isinstance(json_str[key],dict):

target_json[key] = json_str[key]

else:

target_json[key] = analyse_json(json_str[key])

return target_json

print(analyse_json(d1))

print(analyse_json(d2))

print(analyse_json(d3))

输出:

{'id': [1, 2, '3'], 'name': ['Number1', 'Number2', 'Number3'], 'age': [11, 22, 33]}

{'persons': {'id': [1, '2', 3], 'name': ['Number1', 'Number2', 'Number3'], 'age': [11, 22, 33]}}

{'code': 200, 'persons': {'id': [1, True, 3], 'name': ['Number1', 'Number2', 'Number3'], 'age': [11, 22, 33]}}

总结

以上是生活随笔为你收集整理的python3 json_Python3 解析复杂结构的 json的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。