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

2024-06-16 12:23:58 发布

您现在位置:Python中文网/ 问答频道 /正文

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

{
    "j1": [{
        "URL": "http://localhost/",
        "Data": "{\"dump\":[{values:[{time:1586826385724,val:5.12},{time:1587576460460,val:3.312}]}]}"
    }]
}

在本例中,我希望访问“值”,并在后续条目中添加元素名称:ABC和名称:CBA

{values:[{name:'ABC',time:1586826385724,val:5.12},
{name:'CBA',time:1587576460460,val:3.312}]}

现在,通过下面的代码,我得到了一个字典数据,但我不确定如何通过这个dict访问样本及其值

尝试使用dict对象

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

我尝试使用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'))

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


Tags: nameimport名称json元素datatimewith
0条回答
网友
1楼 · 发布于 2024-06-16 12:23:58

它是一种放松的JSON格式。有一个A relaxed JSON parser for Python。 以下是一个例子:

>>> import relaxedjson
>>> relaxedjson.parse('{moose: "goose"}')
{'moose': 'goose'}
网友
2楼 · 发布于 2024-06-16 12:23:58

对我来说,这里似乎有一个嵌套的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"

现在我们有了这样的inner变量

{'dump': [{'values': [{'name': 'ABC', 'time': 1586826385724, 'val': 5.12},
                      {'name': 'CBA', 'time': 1587576460460, 'val': 3.312}]}]}

相关问题 更多 >