【发布时间】:2016-07-28 18:16:03
【问题描述】:
这是我的 Json 对象
{
"id":5,
"url":"http://localhost:8001/api/courses/5",
"name":"Professional Experience II",
"duration":"5.0",
"description":"The course will talk in depth about every thing",
"tutor": {
"id":2,
"email":"TA@mymail.com",
"userName":"TA",
"firstName":"T",
"lastName":"A",
"gender":0
},
"subject":
{
"id":2,
"name":"Science"
}
}
我的模型在这里
public class CourseModel
{
public int Id { get; set; }
public string Url { get; set; }
public string Name { get; set; }
public double Duration { get; set; }
public string Description { get; set; }
public TutorModel Tutor { get; set; }
public SubjectModel Subject { get; set; }
}
这就是我得到这个对象的方式。我能够获取 jsonObject 但无法将其反序列化为相应的模型
string url = "http://localhost:8001/api/courses/5";
HttpResponseMessage responseMessage = await client.GetAsync(url);
if (responseMessage.IsSuccessStatusCode)
{
var responseData = responseMessage.Content.ReadAsStringAsync().Result;
var data = JsonConvert.DeserializeObject<List<CourseModel>>(responseData);
return View(data);
}
return View("Error:);
我得到的错误是
无法反序列化当前 JSON 对象(例如 {"name":"value"}) 输入类型 'System.Collections.Generic.List`1[Learning.Web.Models.CourseModel]' 因为该类型需要一个 JSON 数组(例如 [1,2,3])来反序列化 正确。要修复此错误,请将 JSON 更改为 JSON 数组 (例如 [1,2,3])或更改反序列化类型,使其成为正常的 .NET 类型(例如,不是像整数这样的原始类型,也不是集合 可以从 JSON 反序列化的数组或列表等类型 目的。 JsonObjectAttribute 也可以添加到类型中来强制它 从 JSON 对象反序列化。路径“id”,第 1 行,位置 6。
我正在使用 WebApi,但我不确定我在这里做错了什么.. 任何帮助将不胜感激
更新:
基于 Shyju 和 Habib 的回答,如果我将其反序列化为单个实例,但如果我将 url 更改为
string url = "http://localhost:8001/api/courses";
并将其反序列化为 List,我得到同样的错误,这里是 json 对象
{
"totalCount":32,
"totalPages":4,
"prevPageLink":"",
"nextPageLink":"http://localhost:8001/api/courses?page=1&pageSize=10",
"results":[
{
"id":1,
"url":"http://localhost:8001/api/courses/1",
"name":"History Teaching Methods 1",
"duration":3.0,
"description":"The course will talk in depth about: History Teaching Methods 1",
"tutor":{
"id":1,
"email":"h@outlook.com",
"userName":"A,
"firstName":"A",
"lastName":"J",
"gender":0
},
"subject":{
"id":1,
"name":"History"
}
},
{
"id":2,
"url":"http://localhost:8001/api/courses/2",
"name":"History Teaching Methods 2",
"duration":5.0,
"description":"The course will talk in depth about: History Teaching Methods 2",
"tutor":{
"id":1,
"email":"A.Jo@fg.com",
"userName":"AJo",
"firstName":"A",
"lastName":"Jo",
"gender":0
},
"subject":{
"id":1,
"name":"History"
}
},
{
"id":3,
"url":"http://localhost:8001/api/courses/3",
"name":"History Teaching Methods 3",
"duration":5.0,
"description":"The course will talk in depth about: History Teaching Methods 3",
"tutor":{
"id":1,
"email":"A@outlook.com",
"userName":"A",
"firstName":"A",
"lastName":"J",
"gender":0
},
"subject":{
"id":1,
"name":"History"
}
},
{
"id":4,
"url":"http://localhost:8001/api/courses/4",
"name":"Professional Experience 1 (Mathematics/Science)",
"duration":5.0,
"description":"The course will talk in depth about: Professional Experience 1 (Mathematics/Science)",
"tutor":{
"id":2,
"email":"T.A@mymail.com",
"userName":"T",
"firstName":"T",
"lastName":"A",
"gender":0
},
"subject":{
"id":2,
"name":"Science"
}
},
{
"id":5,
"url":"http://localhost:8001/api/courses/5",
"name":"Professional Experience 2 (Mathematics/Science)",
"duration":5.0,
"description":"The course will talk in depth about: Professional Experience 2 (Mathematics/Science)",
"tutor":{
"id":2,
"email":"TA@mymail.com",
"userName":"T",
"firstName":"T",
"lastName":"A",
"gender":0
},
"subject":{
"id":2,
"name":"Science"
}
},
{
"id":6,
"url":"http://localhost:8001/api/courses/6",
"name":"Professional Experience 3 (Mathematics/Science)",
"duration":5.0,
"description":"The course will talk in depth about: Professional Experience 3 (Mathematics/Science)",
"tutor":{
"id":2,
"email":"TA@mymail.com",
"userName":"T",
"firstName":"T",
"lastName":"A",
"gender":0
},
"subject":{
"id":2,
"name":"Science"
}
},
{
"id":7,
"url":"http://localhost:8001/api/courses/7",
"name":"Geography Teaching Methods 1",
"duration":5.0,
"description":"The course will talk in depth about: Geography Teaching Methods 1",
"tutor":{
"id":3,
"email":"TW@mymail.com",
"userName":"Ti",
"firstName":"T",
"lastName":"W",
"gender":0
},
"subject":{
"id":3,
"name":"Geography"
}
},
{
"id":8,
"url":"http://localhost:8001/api/courses/8",
"name":"Geography Teaching Methods 2",
"duration":5.0,
"description":"The course will talk in depth about: Geography Teaching Methods 2",
"tutor":{
"id":3,
"email":"p@mymail.com",
"userName":"f",
"firstName":"f",
"lastName":"f",
"gender":0
},
"subject":{
"id":3,
"name":"Geography"
}
},
{
"id":9,
"url":"http://localhost:8001/api/courses/9",
"name":"Geography Teaching Methods 3",
"duration":5.0,
"description":"The course will talk in depth about: Geography Teaching Methods 3",
"tutor":{
"id":3,
"email":"s.s@mymail.com",
"userName":"s",
"firstName":"s",
"lastName":"s",
"gender":0
},
"subject":{
"id":3,
"name":"Geography"
}
},
{
"id":10,
"url":"http://localhost:8001/api/courses/10",
"name":"English Education 1",
"duration":5.0,
"description":"The course will talk in depth about: English Education 1",
"tutor":{
"id":4,
"email":"g.g@outlook.com",
"userName":"g",
"firstName":"g",
"lastName":"g",
"gender":0
},
"subject":{
"id":4,
"name":"English"
}
}
]
}
【问题讨论】:
标签: c# json asp.net-mvc serialization