首页 > 解决方案 > 如何删除json数组元素中的对象?

问题描述

假设我有这种 json 格式:

[
    {
       "firstName": "John", 
       "lastName": "Doe"
    }
]

我想删除“lastName”,我该怎么做?

到目前为止,我有这个查询并且它可以工作,但问题是它添加了另一个数组

UPDATE person
SET 
    field = jsonb_set(field::jsonb, 
    '{0}', 
    field::jsonb #- '{0,lastName}',
    false)

我上面查询的结果:

[
    [
       {
           "firstName": "John"
       }
    ]
]

我想要的结果:

[
    {
       "firstName": "John"
    }
]

标签: sqljsonpostgresqljsonb

解决方案


在第三个参数中使用数组的第一个元素(不是整个数组):

UPDATE person
SET 
    field = jsonb_set(field::jsonb, 
    '{0}', 
    (field::jsonb->0) - 'lastName',
    false)

推荐阅读