Я просто не могу найти правильное решение для этой проблемы, хотя я наткнулся на ту же тему, которая была задана ранее.

Здесь приведен мой пример 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 rCreate { get; set; }
    public Nullable rUpdate { get; set; }
    public Nullable rDelete { get; set; }
    public Nullable rView { get; set; }
    public jsonarray[] manageaptarray { get; set; }
}



public class jsonarray
{
    public int VanId { get; set; }

    public string VanName { get; set; }

    public List Doctors { get; set; }
}
}

когда я это делаю, то получаю ошибку "cannot deserialize the current json array (e.g. 1 2 3 ) into type...."

.

Я поискал на других форумах, в основном предлагалось десериализовать массив json. Вот что я сделал в своем коде на c#

List jsondata = JsonConvert.DeserializeObject>(value.manageaptarray.ToString());

Примечание: value - это параметр, где я получаю этот json.

Я попробовал внести некоторые изменения в файлы классов, например, сделать idictionary, но это дает ту же ошибку.

Поскольку я работаю с angularjs, я попробовал следующее

json.stringify(jsondata)
angular.tojson(jsondata)
json.parse(jsondata)

Но с этим не повезло. Пожалуйста, помогите мне здесь. Насколько я понял, я думаю, что передача массива внутри массива является проблемой, которая вызывает проблемы. Так что если кто-нибудь может помочь мне разобраться с этим, я буду очень благодарен, чтобы не тратить на это время.

Заранее спасибо и желаю вам всем счастливого Нового 2016 года<3

Примечание для модераторов: я знаю, что это повторяющийся вопрос, но большинство вопросов не касаются массива массивов в json.

Ответы (1)

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#, который показывает, как преобразовать правильный JSON в класс C# с помощью Visual Studio 2013/15.

Верный 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(jsonString);

2022 WebDevInsider