读取 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))
这可能是一个新手问题。
但是当我传递 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))