如何移除JSON对象的属性

2024-10-01 05:02:59 发布

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

我有一个JSON响应,我需要删除一个包含该值的属性,并将其作为响应添加到在JSON对象中解析的新列表中。在

JSON响应是:

 [
    {
        "bookmark": "bla",
        "entity_name": "aag",
        "id": 56
    },
    {
        "bookmark": "ag",
        "entity_name": "dsg",
        "id": 34
    },
    {
        "bookmark": "agds",
        "entity_name": "dsaga",
        "id": 12
    }
   ...
]

我想对其进行修改,但是拼接它的一些属性(例如“bookmark”)并将其作为JSON对象发送回来。在

事情是这样的。在

^{pr2}$

我尝试了很多方法,但似乎无法得到我想要的输出。在

如果新列表与上述类似:

^{3}$

任何建议都会很有帮助。 谢谢你


Tags: 对象nameidjson列表属性事情entity
3条回答

使用json库:

data = ...  # put your JSON object here

result = json.dumps([{k: v for k, v in d.items() if k != 'bookmark'} 
                     for d in json.loads(data)])
print(result)

输出:

^{pr2}$

这个解决方案有几个步骤。在

首先,如果您的输入是一个JSON对象,那么它必须转换为适当的Python对象(通常是一个嵌套的dict或{})。这是用json.loads完成的(我记得它是“JSON加载字符串”)。在

接下来,我们可以使用一个简单的理解来获得我们想要的结果,它是一个大小相同的list,只需删除其中每个dict中的'bookmark'键。使用的理解等同于以下内容:

loaded = json.loads(data)

result = []

for d in result:
    new_d = {}
    for key, value in d.items():
        if key != 'bookmark':
            new_d[key] = value

    result.append(new_d)

最后,当然,我们使用json.dumps将结果转换回JSON对象。在

对于python

您可以使用del运算符

用你的例子

_collections = [{
    'bookmark': 'bookmark',
    'entity_name': "aag",
    'id': 56
},
{
    'bookmark': 'bookmark',
    'entity_name': "aag",
    'id': 56
},
{
    'bookmark': 'bookmark',
    'entity_name': "aag",
    'id': 56
}
]

for item in _collections:
    del item["bookmark"]

print(_collections)

对于javascript

您可以使用delete运算符。在

以您的例子:

^{pr2}$

可以在迭代数据时使用pop。在

import json
entities = [
    {
        "bookmark": "bla",
        "entity_name": "aag",
        "id": 56
    },
    {
        "bookmark": "ag",
        "entity_name": "dsg",
        "id": 34
    },
    {
        "bookmark": "agds",
        "entity_name": "dsaga",
        "id": 12
    }
]

for entity in entities:
  entity.pop("bookmark")

print(json.dumps(entities))

注意:如果要过滤掉多个密钥,则可以执行以下操作:

^{pr2}$

相关问题 更多 >