我有使用WITHOUT_ARRAY_WRAPPER从MSSQL生成的多行JSON:
{
"fName":"John",
"lName":"Smith"
},
{
"fName":"Emma",
"lName":"Watson"
},
{
"fName":"Harry",
"lName":"Potter"
}
接下来在存储过程中,我将使用以下命令构建响应:
select json_query(@data, '$') as data,
@status as status,
@responseMessage as message
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER;
但是通过这种方式,我只得到第一个元素:
{
"data":{
"fName":"John",
"lName":"Smith"
}
}
当我在不使用WITHOUT_ARRAY_WRAPPER的情况下在第一个JSON中提取数据时,就可以了,但是我的.NET应用程序出现异常,结果为空且HTTP500。
我的.NET代码:
response = await new SQLDataContext().StoredProcedureExecuteReaderAsync<SQLDataResult>("SP_name", parameters);
public class SQLDataResult
{
public SQLDataResult()
{
// Status = SQLDataResultStatus.Error;
status = -1;
message = "An error occured";
}
[JsonProperty("status")]
// public SQLDataResultStatus Status;
public int status;
[JsonProperty("message")]
public string message;
[JsonProperty("data")]
public dynamic data;
}
答案 0 :(得分:0)
与其尝试不使用WITHOUT_ARRAY_WRAPPER,而是将其保留在那里,而是通过C#获取第一个索引。像这样:
var response = (await new SQLDataContext().StoredProcedureExecuteReaderAsync<List<SQLDataResult>>("SP_name", parameters))[0];