首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将JSON数组解析为SQL表

如何将JSON数组解析为SQL表
EN

Stack Overflow用户
提问于 2018-05-30 21:41:03
回答 1查看 2.8K关注 0票数 0

我遇到了一些问题。我不知道如何读取JSON对象列表中的所有节点。

我有3个标题为[item1, item2, item3]的项目(对象)。

我需要获取项目的名称和所有内部字段,如下所示:table screenshot

以下是源JSON数据:

代码语言:javascript
复制
{
  "item1": {
    "title": "2",
    "value": null,
    "visible": true,
    "name": "item1",
    "enabled": true,
    "readonly": false,
    "id": "f1f46ce6-9d0b-4eaf-88b7-d35b23a4d2e4"
  },
  "item2": {
    "title": null,
    "value": null
    "visible": true,
    "name": "item2",
    "enabled": true,
    "readonly": false,
    "id": "da2b8a02-cfbd-4de8-8a33-74e2a484475a"
  },
  "item3": {
    "title": "",
    "value": null,
    "visible": true,
    "name": "item3",
    "enabled": true,
    "readonly": false,
    "id": "57ee45d6-41d7-45c2-b022-13220e31d2d2"
  }
}

我找到了如何使用OPENJSON()JSON_VALUE()函数来做这件事的方法,但我仍然不能遍历所有项目。

代码语言:javascript
复制
  SELECT * FROM OPENJSON (@json, '$.item1')
    WITH (
        ItemName VARCHAR(100) '$',
        Title VARCHAR(100) '$.name',
        Value VARCHAR(100) '$.value',
        Visible VARCHAR(100) '$.visible',
        Name VARCHAR(100) '$.name',
        Enabled VARCHAR(100) '$.enabled',
        ReadOnly VARCHAR(100) '$.readonly',
        Id VARCHAR(500) '$.id'
    )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-30 21:59:06

像这样的东西?

代码语言:javascript
复制
SELECT [Key].[key] AS [ItemName], [Value].*
FROM OPENJSON (@json, '$') AS [Key]
CROSS APPLY OPENJSON([Key].value)
    WITH (
        Title VARCHAR(100) '$.title',
        Value VARCHAR(100) '$.value',
        Visible VARCHAR(100) '$.visible',
        Name VARCHAR(100) '$.name',
        Enabled VARCHAR(100) '$.enabled',
        ReadOnly VARCHAR(100) '$.readonly',
        Id VARCHAR(500) '$.id'
    ) AS [Value]

“诀窍”是对子对象json图的交叉应用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50606251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档