Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.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
C# Can';t将JSON反序列化为对象_C#_Asp.net_Json_Json Deserialization - Fatal编程技术网

C# Can';t将JSON反序列化为对象

C# Can';t将JSON反序列化为对象,c#,asp.net,json,json-deserialization,C#,Asp.net,Json,Json Deserialization,我正在我的程序中做一些测试,我想把APIGatewayProxyResponse转换成一个对象来访问它的值 下面是我的APIGatewayProxyResponse.Body(它是一个字符串)的示例: "[{"date": "2020-03-06", "value": 35},{"date": "2020-03-09", "value": 233}]" 起初我想把它变成一个字典,但我意识到这可能是不可能的,因为字典有唯一的键值,而这里我有一个不唯一的“日期”和“值”属性 var dic = J

我正在我的程序中做一些测试,我想把APIGatewayProxyResponse转换成一个对象来访问它的值

下面是我的APIGatewayProxyResponse.Body(它是一个字符串)的示例:

"[{"date": "2020-03-06", "value": 35},{"date": "2020-03-09", "value": 233}]"
起初我想把它变成一个字典,但我意识到这可能是不可能的,因为字典有唯一的键值,而这里我有一个不唯一的“日期”和“值”属性

var dic = JsonConvert.DeserializeObject<Dictionary<string, string>>(APIGatewayProxyResponse.Body);

但是也有同样的错误!我不明白,浏览器可以查看响应并识别它是JSON格式,那么为什么ASP.NET中不会发生同样的情况呢?

因为JSON是一个数组,所以可以使用IEnumerable类型反序列化。
试试这个:

var dic = JsonConvert.DeserializeObject<IEnumerable<ResponseObject>>(APIGatewayProxyResponse.Body);
var dic=JsonConvert.DeserializeObject(APIGatewayProxyResponse.Body);

看看你的JSON,最外层的令牌类型是什么?对象或数组?
List
应该可以工作,因为每个数组项中的键都是唯一的。但强类型对象的集合是最干净的。
var dic = JsonConvert.DeserializeObject<IEnumerable<ResponseObject>>(APIGatewayProxyResponse.Body);