读取 json 数据和 json 路径到 return 元组或列表的函数

Function to read json data and a json path to return a tuple or list

这可能是一个新手问题。

但是当我传递 json 数据和 json 路径时,我正在尝试为 return 元组或列表创建一个函数(或找到一个有一个函数的库)对它;像这样:

Tup1 = Extract(json_data,json_path) 
List1 = Extract(json_data,json_path) 

所以基本上变成这样:

{
    "name"="john",
    "age"=25
}

Tup1 = ('john',25)

List1 = ['john',25]

有没有一种方法可以用最少的编码来完成这个?

您可以做的是,您可以使用 简单的列表理解 将解析后的 json 数据中的所有值加入列表.要处理解析,只需使用 json.load 加载文件或使用 json.loads 从字符串加载。

这将 return 作为列表:

import json
def Extract(json_data,json_path):
    json_data = json.load(json_path) # parse the data from json_path, if it's already parsed, skip this line
    return [val for val in json_data.values()] # add tuple() around it if you want tuple instead

List1 = Extract(json_data,json_path) 

{ "name"="john", "age"=25 }

不是 json 数据的正确语法,您需要将 = 替换为 :

{ "name":"john", "age":25 }

其中一种方法是:

import json

#assuming json_data contains valid data
def Extract(json_data, json_path, format="list"):
    try:
        data = json.loads(json_data)
        if format == "list":
            reutrn data.values()
        elif format == "tuple":
            reutrn tuple(data.values())
    except ValueError as e:
        print "error in parsing json_data", e

#assuming json_path contains valid data     
def Extract(json_data, json_path, format="list"):
    try:
        data = json.load(json_path)
        if format == "list":
            reutrn data.values()
        elif format == "tuple":
            reutrn tuple(data.values())
    except ValueError as e:
        print "error in parsing json_data", e       
    except IOError as e:
        print "error in opening json_path", e

jsonpath 包是一个小型库,我用它来使用其 json 路径地址提取元素并创建一个函数来获取 json 数据和 [=16 的列表=]路径元素和returns来自json数据的每个元素的对应值作为元组:

显然你可以根据自己的要求扩展这个

from jsonpath import jsonpath

def json2tuple(json_data,jsonpaths_list):
    return_data = []

    for path in jsonpaths_list :
        return_data.append(jsonpath(json_data,path)[0])

    return(tuple(return_data))