[英]Can't deserialize the current json array into type
我找不到适合这个问题的解决方案,虽然我遇到过之前提到过的同一个话题。
这是我的样本Json,我发布到web api控制器
{
"AppointmentId ":2079,
"manageaptarray":[
"VanId":6,
"Doctors":[
{"Id":1,"Name":Doc1},
{"Id":2,"Name":Doc2}
]
]}
这是我的c#课程
public class ManageDoctorModel
{
public int Id { get; set; }
public int AppointmentId { get; set; }
public DateTime? AppointmentAt { get; set; }
public DateTime ScheduledAt { get; set; }
public int? ModifiedBy { get; set; }
public DateTime? ModifiedDateTime { get; set; }
public Nullable<bool> rCreate { get; set; }
public Nullable<bool> rUpdate { get; set; }
public Nullable<bool> rDelete { get; set; }
public Nullable<bool> rView { get; set; }
public jsonarray[] manageaptarray { get; set; }
}
public class jsonarray
{
public int VanId { get; set; }
public string VanName { get; set; }
public List<Doctorslist> Doctors { get; set; }
}
}
当我这样做时,我得到错误“无法将当前的json数组(例如1 2 3)反序列化为类型....”
我在堆栈和其他论坛上搜索了大部分建议是反序列化json数组。所以这就是我在我的c#代码中所做的
List<jsonarray> jsondata = JsonConvert.DeserializeObject<System.Collections.Generic.List<jsonarray>>(value.manageaptarray.ToString());
注意:value是我得到这个json的参数。
我在我的类文件中尝试了一些更改,比如执行idictionary <string,object>
但这给了我同样的错误。
由于我正在使用angularjs,我尝试了以下内容
json.stringify(jsondata)
angular.tojson(jsondata)
json.parse(jsondata)
但没有运气。请帮助我在这里。据我所知,我认为在阵列中传递阵列是导致麻烦的问题。所以,如果有人能帮我解决这个问题,那将是非常有益的我不会在这上面浪费更多时间。
在此先感谢您,祝大家新年快乐2016 <3
mods的注意事项:我知道这是一个重复的问题,但大多数问题都没有在json中处理数组。
您在问题中显示的JSON,而不是有效的JSON:
{
"AppointmentId ":2079,
"manageaptarray": [
"VanId": 6,
"Doctors": [
{
"Id":1,
"Name": Doc1
},
{
"Id":2,
"Name":Doc2
}
]
]
}
manageaptarray是一个无效的数组语法,也是JSON语法,Doc1和Doc2不是有效值,可能它们是一个字符串,所以它们应该在双引号之间。
您必须首先修复JSON,然后您可以查看我的答案将JSON反序列化为Object C# ,它显示如何使用Visual Studio 2013/15在C#类中转换有效的JSON。
有效的JSON应该是这样的:
{
"AppointmentId ":2079,
"manageaptarray": [
{
"VanId": 6,
"Doctors": [
{
"Id":1,
"Name": "Doc1"
},
{
"Id":2,
"Name": "Doc2"
}
]
}
]
}
与此匹配的C#类是:
public class Rootobject
{
public int AppointmentId { get; set; }
public Manageaptarray[] manageaptarray { get; set; }
}
public class Manageaptarray
{
public int VanId { get; set; }
public Doctor[] Doctors { get; set; }
}
public class Doctor
{
public int Id { get; set; }
public string Name { get; set; }
}
然后,您可以使用以下命令将此JSON反序列化为类:
Rootobject jsondata = JsonConvert.DeserializeObject<Rootobject>(jsonString);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.