可以';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中的数组。

可以';t将当前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);