AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 332047
Accepted
Peter
Peter
Asked: 2023-10-11 21:21:11 +0800 CST2023-10-11 21:21:11 +0800 CST 2023-10-11 21:21:11 +0800 CST

将项目添加到 JSON

  • 772

我有以下想要合并的 JSON。在我的 JSON 中,我有“kenmerken”部分,我想在其中添加更多项目。我认为这可以通过使用 JSON_MODIFY 来完成。然而,当我使用下面的语句时,它将替换项目 1、2 和 3。当我在 $.kenmerken 之前包含“append”时,它只会显示新的项目。我怎样才能将它们都包含在 kenmerken 对象中?

DECLARE @FirstJSON NVARCHAR(MAX) = N'
{
    "message id": "B673A8E4-3652-4544-A02D-BA9726BD71ED",
    "volgnummer": 61000233530024,
    "debug": null,
    "kenmerken": {
        "item 1": 1,
        "item 2": 1,
        "item 3": 1
    }
}
';

DECLARE @KenmerkenToAdd NVARCHAR(MAX) = N'
{
    "Item 4": false,
    "Item 5": false
}
';

SET @FirstJSON = JSON_MODIFY(
                               @FirstJSON,
                               ' $.kenmerken',
                               JSON_QUERY(@KenmerkenToAdd)
                            );

SELECT @FirstJSON;

会给:

{
"message id": "B673A8E4-3652-4544-A02D-BA9726BD71ED",
"volgnummer": 61000233530024,
"debug": null,
"kenmerken": {
   "Item 4": false,
   "Item 5": false
   }
}

我想要的地方:

{
    "message id": "B673A8E4-3652-4544-A02D-BA9726BD71ED",
    "volgnummer": 61000233530024,
    "debug": null,
    "kenmerken": {
       "Item 1": 1,
       "Item 2": 1,
       "Item 3": 1,
       "Item 4": false,
       "Item 5": false
       }
    }
sql-server-2019
  • 1 1 个回答
  • 198 Views

1 个回答

  • Voted
  1. Best Answer
    Peter Vandivier
    2023-10-11T23:01:36+08:002023-10-11T23:01:36+08:00

    StackOverflow 上已经基本回答了这个问题。但是,需要针对您的特定用例进行修改。在这里完成小提琴,但其要点是:

    DECLARE @Kenmerken NVARCHAR(MAX) = JSON_QUERY(@FirstJSON,' $.kenmerken');
    
    SELECT @Kenmerken = JSON_MODIFY(
        @Kenmerken, 
        CONCAT(N'$.', QUOTENAME([key],'"')), 
        [value]
    )
    FROM OPENJSON(@KenmerkenToAdd);
    
    SET @FirstJSON = JSON_MODIFY(
            @FirstJSON,
            ' $.kenmerken',
            JSON_QUERY(@Kenmerken)
        )
    ;
    

    key值得注意的是,由于名称中存在空格字符,因此必须用引号引起来。请注意,其中@KenmerkenToAdd已存在的任何键@Kenmerken都将使用此方法覆盖原始值(尽管这与大多数 JSON 规范中的最后值胜出重复键规则一致)。

    遗憾的是,原始 JSON 不再经过美化,但对于 JSON 解析仍然有效。

    • 3

相关问题

  • SQL Server 评估期已过期

  • 新的系统存储过程 sys.xp_delete_files 与 sys.xp_delete_file 有何不同?

  • 从 SQL Server 2012 SP1 升级到 SQL Server 2019

  • MS SQL Server 是否有 generate_series 功能

  • 如何启用 SQL Server 2019 的结果集缓存?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve