虽然我遇到过之前提到过的同一主题,但我无法找到解决此问题的正确方法。
这是我发布到web api控制器的样本Json
{
"AppointmentId ":2079,
"manageaptarray":[
"VanId":6,
"Doctors":[
{"Id":1,"Name":Doc1},
{"Id":2,"Name":Doc2}
]
]}
这是我的c#class
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; }
}
}
当我这样做时,我得到错误&#34;无法将当前json数组(例如1 2 3)反序列化为类型....&#34;
我在堆栈和周围搜索其他论坛的大部分建议都是对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中处理数组。
答案 0 :(得分:3)
您在问题中显示的JSON,而不是有效的JSON:
{
"AppointmentId ":2079,
"manageaptarray": [
"VanId": 6,
"Doctors": [
{
"Id":1,
"Name": Doc1
},
{
"Id":2,
"Name":Doc2
}
]
]
}
manageaptarray是一个无效的数组语法,也是JSON语法,Doc1和Doc2不是有效值,可能它们是一个字符串,所以它们应该在双引号之间。
您必须首先修复JSON,然后您可以查看我的答案Deserialize JSON into 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);