我正在尝试直接反序列化来自Web Api的JSON数据。但是它是throwinn错误:
无法反序列化当前的JSON对象(例如{“name”:“value”}) 进入类型 'System.Collections.Generic.List`1 [TestMvc.Controllers.HomeController + TestJson]' 因为该类型需要一个JSON数组(例如[1,2,3])来反序列化 正确。
我的代码:
public class TestJson
{
public string thing1
{
get;
set;
}
public string thing2
{
get;
set;
}
}
using (WebClient wc = new WebClient())
{
var json = wc.DownloadString("http://localhost:43560/api/carvalues");
List <TestJson> exam = new List<TestJson>();
exam = JsonConvert.DeserializeObject<List<TestJson>>(json);
}
json数据示例
{"thing1":"first thing","thing2":"second thing"}
我的目标是如何直接反序列化来自WebAPI的数据。我正在使用Newtonsoft.Json进行反序列化。
答案 0 :(得分:1)
示例json数据表明它只是一个回到响应中的对象,您期望对象的数组/列表。
将webapi修改为返回列表而不是单个对象,它应该解决问题。
答案 1 :(得分:1)
在这种情况下,请使用不带列表
var exam = new TestJson();
exam = JsonConvert.DeserializeObject<TestJson>(json);
答案 2 :(得分:0)
您的JSON数据需要在数组上,类似这样
"data": [{
"thing1": "first thing",
"thing2": "second thing"
}, {
"thing1": "first thing",
"thing2": "second thing"
}, {
"thing1": "first thing",
"thing2": "second thing"
}]
或者使用普通类,特别是这种情况
exam = JsonConvert.DeserializeObject<TestJson>(json);