zoukankan      html  css  js  c++  java
  • 输入一个json输入一个jsonpath

    1,最近在公司里因为业务需求需要写一个函数实现,输入一个json输出一个jsonpath

    以下是代码:

    
    
    def data_handle(data, jsonpath):  # 第一次调用这个函数的时候,jsonpath 设为 $. 或$
    if isinstance(data, dict): #判断数据类型,如果是字典类型执行这个
    for key in data:
    if isinstance(data[key], str) or isinstance(data[key], int):
    jsonpath1 = jsonpath + key
    if key != "jsonpath":
    print(jsonpath1) # 这是本次调用该函数可以直接计算出来jsonpath。 这个地方只输出,也可以写到一起txt中

    elif isinstance(data[key], dict):
    jsonpath1 = jsonpath + key + '.'
    data_handle(data[key],jsonpath1)
    # dict1['jsonpath'] = jsonpath1
    # templist.append(dict1)
    # print(templist)
    elif isinstance(data[key], list):
    jsonpath1 = jsonpath + key
    data_handle(data[key], jsonpath1)
    elif isinstance(data, list): # 第一次jsonpath为 $
    for each in data:
    if isinstance(each, dict):
    jsonpath1 = jsonpath + '[' + str(data.index(each)) + ']' + '.'
    dic2 = {}
    dic2 = each
    dic2['jsonpath'] = jsonpath1
    templist.append(dic2)
    elif isinstance(each, list):
    jsonpath1 = jsonpath + "[" + str(data.index(each)) + "]"
    data_handle(each, jsonpath1)
    elif isinstance(each, str) or isinstance(each, int):
    jsonpath1 = jsonpath + '[' + str(data.index(each)) + ']'
    if each != "jsonpath":
    print(jsonpath1)
    data_handle(ex_data,"$.")#调用函数传入一个data和一个jsonpath的初始值即可
  • 相关阅读:
    大数据处理系列之(二)系统过载保护
    大数据处理系列之(一)Java线程池使用
    js实现递归菜单无限层
    treeTable实现排序
    spring-dm 一个简单的实例
    Equinox OSGi服务器应用程序的配置步骤 (支持JSP页面)
    Spring DM 2.0 环境配置 解决Log4j问题
    Spring.DM web开发环境搭建
    STL容器的排序
    排序例子
  • 原文地址:https://www.cnblogs.com/dashouzhang/p/7305321.html
Copyright © 2011-2022 走看看