当前位置: 首页 > 技术支持 > 服务器维护>> 使用Python对复杂的 json进行解析

使用Python对复杂的 json进行解析

使用Python对复杂的 json进行解析

json是一种轻量级、跨平台、跨语言的数据交换格式; json模块提供了对json的支持,它既包含了将json字符串恢复成Python对象的函数,也提供了将Python对象转换成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]}}  

本文来源:www.lxlinux.net/8055.html,若引用不当,请联系修改。


服务器购买/咨询热线:1563700917115617636856

本文链接:http://43.134.181.216/jishuzhichiyuweihu/14743.html
tags:LinuxVPSHTTPHTTPSWebHTMLPython
腾讯云服务器特惠

  • 关注微信
是否收录:

猜你喜欢

微信公众号