来自带有子级别的SQL查询的JSON

Dan*_*ber 1 sql-server json sql-server-json

我的数据库中有一个简单的查询:

SELECT id, name FROM users FOR JSON AUTO, ROOT('users')
Run Code Online (Sandbox Code Playgroud)

这将返回以下JSON:

{
    "users": [
        {"id": "1", "name": "John"}
        {"id": "2", "name": "Mike"}
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想使用以下格式返回:

{
    "users": {
        "list": [
            {"id": "1", "name": "John"}
            {"id": "2", "name": "Mike"}
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以在SQL级别上通过简单地更改查询来做到这一点吗?

Zho*_*rov 5

您可以尝试以下方法:

表:

CREATE TABLE users (
   id varchar(1),
   [name] varchar(50)
)
INSERT INTO users
   (id, [name])
VALUES
   ('1', 'John'),
   ('2', 'Mike')
Run Code Online (Sandbox Code Playgroud)

声明:

SELECT users = (SELECT id, name FROM users FOR JSON AUTO, ROOT('list'))
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
Run Code Online (Sandbox Code Playgroud)

结果:

{"users":{"list":[{"id":"1","name":"John"},{"id":"2","name":"Mike"}]}}
Run Code Online (Sandbox Code Playgroud)