首页 > 解决方案 > 我如何访问多维 json 数组中的元素(在 SQL Server 中)

问题描述

我有一个多维 JSON 数组,我正在访问 SQL Server 中的 JSON 数组并使用“OPENJSON”将 JSON 数据转换为 SQL。我目前在从多维数组中获取数据时遇到问题

Declare @Json nvarchar(max)

Set @Json= '[{
    "id": 0,
    "healthandSafety": "true",
    "estimationCost": "7878",
    "comments": "\"Comments\"",
    "image": [{
        "imageData": "1"
    }, {
        "imageData": "2"
    }, {
        "imageData": "3"
    }, {
        "imageData": "4"
    }, {
        "imageData": "5"
    }]
}, {
    "id": 1,
    "healthandSafety": "false",
    "estimationCost": "90",
    "comments": "\"89089\"",
    "image": [{
        "imageData": "6"
    }, {
        "imageData": "7"
    }, {
        "imageData": "8"
    }, {
        "imageData": "9"
    }, {
        "imageData": "10"
    }, {
        "imageData": "11"
    }]
}]'

Select ImageJsonFile from OPENJSON (@Json) with (ImageJsonFile nvarchar(max) '$.image[0].imageData')

当我尝试上面的代码时,我得到了以下输出:

ImageJsonFile
1
6

我期望的输出:

ImageJsonFile
1
2
3
4
5

标签: arraysjsonsql-servermultidimensional-array

解决方案


您需要定义查询路径:

Select * from OPENJSON (@Json,'$[0].image') with (ImageJsonFile nvarchar(max) '$.imageData')

推荐阅读