.net JSON#U查询(@data,';$';)仅从JSON获取第一个元素
我有从MSSQL生成的多行JSON,带有\u数组\u包装器:.net JSON#U查询(@data,';$';)仅从JSON获取第一个元素,.net,sql-server,json-query,.net,Sql Server,Json Query,我有从MSSQL生成的多行JSON,带有\u数组\u包装器: { "fName":"John", "lName":"Smith" }, { "fName":"Emma", "lName":"Watson" }, { "fName":"Harry", "lName":"Potter" } 接下来在存储过程中,我将使用以下内容构建响应: select json_query(@data, '$') as data, @status as status, @responseMessage
{
"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"
}
}
当我在第一个JSON中提取数据而不使用WITHONE_ARRAY_包装时,它是OK的,但是我的.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;
}
response=wait new SQLDataContext().StoredProcedureExecuteReaderAsync(“SP_name”,参数);
公共类SQLDataResult
{
公共SQLDataResult()
{
//Status=SQLDataResultStatus.Error;
状态=-1;
message=“发生错误”;
}
[JsonProperty(“状态”)]
//公共SQLDataResultStatus状态;
公众地位;
[JsonProperty(“消息”)]
公共字符串消息;
[JsonProperty(“数据”)]
公共动态数据;
}
我不想在没有数组包装器的情况下实现它,而是把它放在那里,通过C获取第一个索引。大概是这样的:
var response = (await new SQLDataContext().StoredProcedureExecuteReaderAsync<List<SQLDataResult>>("SP_name", parameters))[0];
var response=(等待新的SQLDataContext().StoredProcedureExecuteReaderAsync(“SP_名称”,参数))[0];
由于第一个json中的数据是一个数组,您是否尝试在其周围添加方括号?是的。我已经试过了,就像我说的那样-没有使用无数组包装器是可以的,但是我的.NET应用程序出现异常,结果为空,HTTP 500。