Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net JSON#U查询(@data,';$';)仅从JSON获取第一个元素_.net_Sql Server_Json Query - Fatal编程技术网

.net JSON#U查询(@data,';$';)仅从JSON获取第一个元素

.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

我有从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 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。