遍历和访问 JSON 中的内部元素

dan*_*y99 6 python json dictionary list python-3.x

我有一个嵌套的 JSON 文档,想要更新其中的元素。下面是 JSON 文件。也多次通过在线格式验证了这个 JSON。

{
    "j1": [{
        "URL": "http://localhost/",
        "Data": "{\"dump\":[{values:[{time:1586826385724,val:5.12},{time:1587576460460,val:3.312}]}]}"
    }]
}
Run Code Online (Sandbox Code Playgroud)

在此,我想访问“值”并在后续条目中添加元素名称:ABC 和名称:CBA。

{values:[{name:'ABC',time:1586826385724,val:5.12},
{name:'CBA',time:1587576460460,val:3.312}]}
Run Code Online (Sandbox Code Playgroud)

现在使用下面的代码正在获取字典数据,但不确定如何通过此字典访问样本及其值。

尝试使用 dict 对象

import json
   with open("new1.json") as json_file:
   data = json.load(json_file)
   data['json1'][0]['DownloadData'][0:]
Run Code Online (Sandbox Code Playgroud)

我尝试使用objectpath库进行 json 元素遍历但获取空结果集

#trying with objectpath lib
 import json
    import objectpath
    with open("new1.json") as json_file:
    data = json.load(json_file)
    jsonnn_tree = objectpath.Tree(data['json1'])    
    result_tuple = tuple(jsonnn_tree.execute('$..values'))
Run Code Online (Sandbox Code Playgroud)

我确实理解不应该要求直接代码,但在访问嵌套 JSON/字典时无法在此上下文中找到任何相关内容。作为一个新手,想到这里寻求一些指导。

ex4*_*ex4 4

对我来说,您似乎在这里有一个嵌套的 JSON 字符串。并且内部 JSON 无效。所以我们必须在解析之前修复它。

import json
with open("new1.json") as json_file:
   data = json.load(json_file)
innerstr = data["j1"][0]["Data"]
innerstr = innerstr.replace("values",'"walues"').replace("time",'"time"').replace("val",'"val"').replace("walues","values")
inner = json.loads(innerstr)
#then we can modify inner data as we want
inner["dump"][0]["values"][0]["name"] = "ABC"
inner["dump"][0]["values"][1]["name"] = "CBA"
Run Code Online (Sandbox Code Playgroud)

现在我们有inner这样的变量

{'dump': [{'values': [{'name': 'ABC', 'time': 1586826385724, 'val': 5.12},
                      {'name': 'CBA', 'time': 1587576460460, 'val': 3.312}]}]}
Run Code Online (Sandbox Code Playgroud)