Python 如何删除JSON对象上的属性

Python 如何删除JSON对象上的属性,python,json,python-3.x,list,dictionary,Python,Json,Python 3.x,List,Dictionary,我有一个JSON响应,需要删除一个包含该值的属性,并将其作为响应添加到JSON对象中解析的新列表中 JSON响应是: [ { "bookmark": "bla", "entity_name": "aag", "id": 56 }, { "bookmark": "ag", "entity_name": "dsg", "id": 34 }, { "

我有一个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对象发送回去

事情是这样的

[
    {
        "entity_name": "aag",
        "id": 56
    },
    {

        "entity_name": "dsg",
        "id": 34
    },
    {

        "entity_name": "dsaga",
        "id": 12
    }
    ...
]
我已经尝试了很多方法,但似乎无法获得如上所述的理想输出

如果新列表与上述类似:

return jsonify(newList)
任何建议都会非常有用。 感谢您使用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

您可以使用删除运算符

以您的例子:

var _firstCollection =  [
    {
        "bookmark": "bla",
        "entity_name": "aag",
        "id": 56
    },
    {
        "bookmark": "ag",
        "entity_name": "dsg",
        "id": 34
    },
    {
        "bookmark": "agds",
        "entity_name": "dsaga",
        "id": 12
    }
];

_firstCollection.forEach(item => {
   delete item.bookmark; // removes bookmark property of every item
});
console.log(_firstCollection);
对于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

您可以使用删除运算符

以您的例子:

var _firstCollection =  [
    {
        "bookmark": "bla",
        "entity_name": "aag",
        "id": 56
    },
    {
        "bookmark": "ag",
        "entity_name": "dsg",
        "id": 34
    },
    {
        "bookmark": "agds",
        "entity_name": "dsaga",
        "id": 12
    }
];

_firstCollection.forEach(item => {
   delete item.bookmark; // removes bookmark property of every item
});
console.log(_firstCollection);
使用json库:

输出:

[
  {"entity_name": "aag", "id": 56}, 
  {"entity_name": "dsg", "id": 34}, 
  {"entity_name": "dsaga", "id": 12}
]
此解决方案有几个步骤

首先,如果您的输入是JSON对象,那么必须将其转换为适当的Python对象,通常是嵌套的dict或list。这是通过json.loads完成的,我记得它是json加载字符串

接下来,我们可以使用一个简单的理解来获得我们想要的结果,这是一个大小相同的列表,只需删除其中每个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对象。

使用JSON库:

输出:

[
  {"entity_name": "aag", "id": 56}, 
  {"entity_name": "dsg", "id": 34}, 
  {"entity_name": "dsaga", "id": 12}
]
此解决方案有几个步骤

首先,如果您的输入是JSON对象,那么必须将其转换为适当的Python对象,通常是嵌套的dict或list。这是通过json.loads完成的,我记得它是json加载字符串

接下来,我们可以使用一个简单的理解来获得我们想要的结果,这是一个大小相同的列表,只需删除其中每个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对象。

您可以在迭代数据时使用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))
注意:如果要过滤掉多个键,则可以执行以下操作:

for entity in entities:
    for key in ["bookmark", "foo", "bar"]:
        entity.pop(key)

您可以在迭代数据时使用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))
注意:如果要过滤掉多个键,则可以执行以下操作:

for entity in entities:
    for key in ["bookmark", "foo", "bar"]:
        entity.pop(key)

你能给我们看一下你的代码吗?那么基本上你只需要拿出书签键就可以了?@gmds-是的,没错,你能给我们看一下你的代码吗?那么基本上你只需要拿出书签键就可以了?@gmds-是的,没错,这是一个Python问题这是一个Python问题哇!非常感谢,你能给我解释一下你的想法吗did@gmds这里使用了[理解,用if条件迭代每个实体和筛选键哇!非常感谢,你能告诉我你想要什么吗did@gmds此处使用[理解],使用if条件迭代每个实体和筛选键