1.软文推荐

2.软文推荐

3.软文推荐

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,若引用不当,请联系修改。

相关文章 8

1

想注册的域名已经被注册了怎么办(新注册的域名) 2分钟前

1、在已被注册的域名上加-、字母或数字等。 2、现在的域名后缀很多,.com的域名如果注册,可以注册其他后缀的域名。 3、如果实在想注册...

2

最新GoDaddy实用优惠码汇总:新用户注册.COM域名$ 4.99/GoDaddy主机年付12美金送域名 2分钟前

GoDaddy是一家成立于1997年的美国纽交所上市公司,服务产品涉及域名主机领域基础业务:域名注册、虚拟主机、VPS、独立主机,以及域名主机...

3

Centos7 yum安装Python3.6环境 4分钟前

配置好Python3.6和pip3 安装EPEL和IUS软件源 yum install epel-release -yyum install https://centos7.iuscommunity.org/ius-release.rpm -y 12 yum install epel - release - y yum ...

4

六六云:英国原生tiktok vps,美西原生9929线路,助力TikTok流量业务 7分钟前

六六云怎么样? 六六云又名666clouds,成立于2019年已运行2年,主要从事洛杉矶AS9929、洛杉矶AS4837、洛杉矶CN2 GIA高防以及香港CN2、香港CMI等线...

5

2020腾讯云双十一预售:双十一优惠活动(活动开始)(腾讯云双11活动 2020) 9分钟前

2020年腾讯云双十一优惠活动有哪些?腾讯云双十一折扣优惠力度怎么样? 2020年腾讯云双十一活动暂未开始,但是很多人已经开始准备入手...

6

Linux 下安装和使用NetHogs 9分钟前

NetHogs是一个小型的net top工具,不像大多数工具那样拖慢每个协议或者是每个子网的速度而是按照进程进行带宽分组。NetHogs不需要依赖载入...

7

【便宜】极光KVM:年付79.8元/1核/256M内存/4G SSD/500G流量/100Mbps/洛杉矶CN2 GT线路 11分钟前

极光KVM(极光互联)是一家成立于2017年的国人主机商家,目前主要销售VPS服务,VPS采用KVM虚拟架构,机房有中国香港和美国洛杉矶,香港机...

8

RackNerd:美国独立服务器促销,E3/16G/500G SSD,1Gbps@30TB流量,季付140美元 14分钟前

RackNerd,2019年末成立的商家,这家提供各类KVM VPS、独立服务器、虚拟主机、分销主机等,国外主机测评介绍过多次。现在有两款特价独立服...