可以';t将当前json数组反序列化为类型
本文关键字:数组 json 反序列化 类型 可以 | 更新日期: 2023-09-27 18:28:36
尽管我遇到了以前问过的同一个话题,但我还是找不到合适的解决方案。
这是我的样本Json,我正在张贴到一个网络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)反序列化为类型……"
我在stack&其他论坛的大部分建议是反序列化json数组。下面是我在我的c代码中所做的
List<jsonarray> jsondata = JsonConvert.DeserializeObject<System.Collections.Generic.List<jsonarray>>(value.manageaptarray.ToString());
注意:value是我获取这个json的参数。
我尝试了对类文件进行一些更改,比如做IDICATIONAry<string,object>
,但这也给了我同样的错误。
由于我使用angularjs,我尝试了以下
json.stringify(jsondata)
angular.tojson(jsondata)
json.parse(jsondata)
但运气不好。请帮帮我。据我所知,我认为在数组中传递数组是造成麻烦的问题。所以,如果有人能帮我弄清楚这一点,那将是非常棒的,这样我就不会在这上面浪费更多的时间。
提前感谢,并祝大家2016年新年快乐<3
请注意:我知道这是一个重复的问题,但大多数问题都不涉及json中的数组。
您在问题中显示的JSON不是有效的JSON:
{
"AppointmentId ":2079,
"manageaptarray": [
"VanId": 6,
"Doctors": [
{
"Id":1,
"Name": Doc1
},
{
"Id":2,
"Name":Doc2
}
]
]
}
manageaptarray是一个无效的数组语法,在JSON语法中,Doc1和Doc2不是一个有效值,可能它们是一个字符串,所以它们应该在双引号之间。
你必须首先修复JSON,然后你可以查看我的答案将JSON反序列化为对象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);