SQL Anywhere FOR JSON EXPLICIT, как создать инкапсулированный массив - PullRequest
0 голосов
/ 31 января 2020

У меня есть этот простой запрос в SQL Везде 17, один столбец две строки:

SELECT
    1       AS tag,
    null    AS parent,
    row_num AS [enc_obj!1!row_num]
FROM
    sa_rowgenerator(1, 2)
ORDER BY
    3
FOR JSON EXPLICIT;

В результате я получаю массив отдельных массивов для каждой строки:

[
    {
        "enc_obj": [
            {
                "row_num": 1
            }
        ]
    },
    {
        "enc_obj": [
            {
                "row_num": 2
            }
        ]
    }
]

Как мне изменить запрос, чтобы получить один массив со всеми строками в нем, например:

{
    "enc_obj": [
        {
            "row_num": 1
        },
        {
            "row_num": 2
        }
    ]
}

Есть идеи?

1 Ответ

0 голосов
/ 20 февраля 2020

Вы можете просто опустить критерий enc_obj из директивы json:

SELECT
    1       AS tag,
    null    AS parent,
    row_num AS [!1!row_num]    -- NOTE: "enc_obj" is dropped!
FROM
    sa_rowgenerator(1, 2)
ORDER BY
    3
FOR JSON EXPLICIT;

В результате вы получите анонимный массив JSON без инкапсулирующего объекта :

[
  {
    "row_num": 1
  },
  {
    "row_num": 2
  }
]

Вы можете работать с этим?

...