Как десериализовать массив Json в список (или) массив - PullRequest
1 голос
/ 13 апреля 2020

Я получаю данные от Ajax вызова, его выдача json вывода упоминается ниже. В моем коде "позади" Jobsheet параметры имеют объект json Array how передать этот параметр в десериализации и получить от него значения

Это мой Json вывод:

string Jobsheet =[{"var_name_data":"Demo1Demo2Demo3Demo4Demo5Demo6Demo7Demo8Demo9Demo10 1,2,3,4,5,6,7,8,9,10"}]

Мой класс:

 public class RootObject
{
    public List<User> var_name_data { get; set; }
}

public class User
{
    public string first_name { get; set; }
    public int customer_id { get; set; }
}

В моем Код позади:

   [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static object Details4(string selectedJobSheet)
    {

        try
        {
            var des = (RootObject)Newtonsoft.Json.JsonConvert.DeserializeObject(selectedJobSheet, typeof(RootObject));

            return des.var_name_data.Count.ToString();


        }
        catch (Exception)
        {

            throw;
        }

    }

Выдает исключение:

Исключение типа 'Newtonsoft. Json .JsonSerializationException' произошло в EBCheckList.dll, но не было обработано код пользователя Дополнительная информация: Невозможно десериализовать текущий массив JSON (например, [1,2,3]) в тип 'EBCheckDAL.RootObject', поскольку для типа требуется объект JSON (например, {"name": "value"} ) правильно десериализовать. Чтобы исправить эту ошибку, измените JSON на JSON объект (например, {"name": "value"}) или измените десериализованный тип на массив или тип, который реализует интерфейс коллекции (например, ICollection, IList) как List, который можно десериализовать из массива JSON. JsonArrayAttribute также можно добавить к типу, чтобы принудительно десериализовать из массива JSON. Путь '', строка 1, позиция 1. произошло

Пожалуйста, помогите мне преобразовать вышеуказанные json данные в список (или) массив элементов

1 Ответ

0 голосов
/ 13 апреля 2020

Вы можете десериализовать Jobsheet, чтобы список объектов не соответствовал RootObject, например, следующий код:
1 - Создать объект, соответствующий объекту json:

public class User
{
    public string Var_name_data { get; set; }
}

2 - Десериализация Jobsheet:

string Jobsheet = @"[{""var_name_data"":""Demo1Demo2Demo3Demo4Demo5Demo6Demo7Demo8Demo9Demo10 1,2,3,4,5,6,7,8,9,10""}]";

List<User> users = JsonConvert.DeserializeObject<List<User>>(Jobsheet);

Демо :

foreach(User user in users)
{
    Console.WriteLine(user.Var_name_data);
}
// or
Console.WriteLine(users.count);

Результат :

Demo1Demo2Demo3Demo4Demo5Demo6Demo7Demo8Demo9Demo10 1,2,3,4,5,6,7,8,9,10
//or
1

Надеюсь, это поможет вам.

...