【发布时间】:2018-06-20 09:00:58
【问题描述】:
我使用 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 应用程序出现异常,结果为空且 HTTP 500。
我的 .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;
}
【问题讨论】:
-
由于您的第一个 json 中的数据是一个数组,您是否尝试在其周围添加方括号?
-
是的。我已经尝试过,就像我说的那样 - 不使用 WITHOUT_ARRAY_WRAPPER 没问题,但是我的 .NET 应用程序出现异常,结果为空且 HTTP 500。
标签: .net sql-server json-query