C# 选择JSON返回字符串数组数组(不是对象数组)

C# 选择JSON返回字符串数组数组(不是对象数组),c#,json,sql-server,datatables,C#,Json,Sql Server,Datatables,我有一个格式为返回JSON的查询。它返回一个对象数组 select id, name from [user] for JSON auto 这是它返回的对象数组 [{ "id": "0FDF9BCA-1E41-4DA6-B892-0017DE395754", "name": "I Accept Answers" }, { "id": &qu

我有一个格式为返回JSON的查询。它返回一个对象数组

select id, name from [user] 
for JSON auto
这是它返回的对象数组

[{
        "id": "0FDF9BCA-1E41-4DA6-B892-0017DE395754",
        "name": "I Accept Answers"
    }, {
        "id": "3E775870-D97A-4B23-B761-00382D932704",
        "name": "Heywood Youhelpme"
    },{
        "id": "4E775870-D97A-4B23-B761-00382D932704",
        "name": "Geeimiss Xml"
    }
 ]
但是,在大型同质数据集中,对象名称过于复杂。我只需要数据(没有对象名称)

我希望将此作为对浏览器端DataTables.js显示的AJAX响应提供


我已经看到了一些“非常”混乱的解决方案,这些解决方案会把查询搞得一团糟,我希望在“for JSON”指令中有一些“as-array”选项或类似的选项。没有任何东西需要对每个参数进行特殊说明。

您可以尝试下面这样的查询,该查询同时使用tsql的功能

select  
    '[' + 
       STRING_AGG(CAST(QUOTENAME(QUOTENAME(id,'"')+','+QUOTENAME(name,'"')) AS NVARCHAR(MAX)),',')
      +']' 
from [user]
这也会起作用

select  '['+
STRING_AGG(CAST(CONCAT('["', id ,'","' , name,'"]') AS NVARCHAR(MAX)),',')
+']' from [user]
如果您需要一个JSON输出的包装器,您可能想试试这个

SELECT REPLACE(REPLACE(REPLACE((select id, name from [user] 
for JSON auto),'[{','[['),'}]',']]'),'},{','],[')

因此,您正在请求一个javascript解决方案。如果是这样,您可以像这样使用
Object.values

var json='[{“id”:“0FDF9BCA-1E41-4DA6-B892-0017DE395754”,“name”:“我接受答案”},{“id”:“3E775870-D97A-4B23-B761-00382D932704”,“name”:“Heywood Youhelpme”},{“id”:“4E775870-D97A-4B23-B761-00382D932704”,“name”:“Geeimiss Xml”};
var obj=JSON.parse(JSON);
var values=Object.keys(obj).map(函数(键){return Object.values(obj[key]);});

log(JSON.stringify(values))Microsoft SQL Server 2017(RTM-CU5)(KB4092643)-14.0.3023.8(X64)2018年3月2日18:24:44版权所有(C)Windows Server 2016数据中心10.0上的2017 Microsoft Corporation Web Edition(64位)(构建14393:)(管理程序)谢谢,但我确实在努力避免这种需要更改整个查询的混乱解决方案。@WilliamWalseth您需要一个cast。更新查询1Dhruv,感谢您是字符串处理方面的专家,能够如此快速地提出这些问题,但这并不是我所希望的方向。MSSQL是否通过某种选项在本地支持此功能?@WilliamWalseth我不知道。对不起,不。我正在寻找SQL解决方案。我只是想在浏览器中获取我想要的数据,而不是在浏览器中修复它。@WilliamWalseth我已经用SQL解决方案更新了我的答案。谢谢iSR5,@JSON来自哪里?我从一个SQL查询开始,想用一个数组来构建JSON。SQL已经构建了对象数组,这也是您正在构建的。我有几十个现有的查询需要更改,所以我不能用这个字符串操作来重新构建它们。@WilliamWalseth
@JSON
是您当前的JSON结果(已经使用[user]for JSON auto
选择id,name from[user]从表中转换而来),上面的查询结果将返回对象值数组(在本例中,我仅将
name
值作为数组返回)@WilliamWalseth很抱歉,我再次更新了我的答案,这次我删除了以前的解决方案,因为您不需要对JSON使用
,因为您想要返回数组数组,而SQL Server只返回对象。因此,借助
STRING\u AGG
直接选择就可以了。
SELECT REPLACE(REPLACE(REPLACE((select id, name from [user] 
for JSON auto),'[{','[['),'}]',']]'),'},{','],[')