Python如何将JSON对象传递给函数?



我正在解析一个json文件,看起来像:my_json:

"DataChangedEntry": {
"CurrentValue": {
"RefId": {
"Value": "aaaaaaa"

获取"Value"它看起来像:

my_json["DataChangedEntry"]["CurrentValue"]["RefId"]["Value"]

我想把它发送到一个try/except函数(因为我有很多字段得到),但我不知道如何发送json对象。我试过:

get_value = my_function(my_json, ["DataChangedEntry"]["CurrentValue"]["RefId"]["Value"])

但是我得到错误:

TypeError: list indices must be integers or slices, not str

my_function就是

def my_function(json_prefix, json_field):
try:
value = json_prefix[json_field]
return value
except:
logging.exception('Exception: ')

您必须将每个键作为单独的参数(或作为单独的参数列表)传递。

def my_function(obj, *fields):
for f in fields:
try:
obj = obj[f]
except KeyError:
logging.exception("Exceptoin: ")
return
return obj
my_function(my_json, "DataChangedEntry", "CurrentValue", ...)

我承认将这些数据单独发送给函数的想法是完全不同的。

而是直接返回值aaaaaaa:

  1. 发送第一个参数作为JSON对象值
  2. 发送第二个参数作为JSON对象名称字符串
  3. 发送第三个参数作为键列表

然后可以使用eval()将字符串的并集转换为代码:

def my_function(json_full, json_prefix, json_field):
my_json = json_full
my_json_str = json_prefix
key_field = '["' + '"]["'.join(json_field) + '"]'
try:
value = eval(f'{json_prefix}{key_field}')
return value
except Exception as e:
return e
def main():
my_json = {
"DataChangedEntry": {
"CurrentValue": {
"RefId": {
"Value": "aaaaaaa"
},
},
},
}
get_value = my_function(my_json, 'my_json', ["DataChangedEntry","CurrentValue","RefId","Value"])
print(get_value)
if __name__ == "__main__":
main()

输出:

aaaaaaa

最新更新