@WSGlebKavash

Как десериализовать простой Json в массив?

Есть такой Json:[{"code":557},{"code":836},{"code":287}]Newtonsoft.Json десериализует его в список экземпляров отдельного класса с одним полем code. Но в данном случае у нас всего одно поле и гарантируется, что все значения будут int. Как десериализовать данный Json в int[]?
  • Вопрос задан
  • 124 просмотра
Решения вопроса 3
@rPman
Вот так не работает?
Newtonsoft.Json.JsonConvert.DeserializeObject<List<MyClassWithCode>>(строка_с_json)


upd. тут тебе нужен потоковый парсер, используй JsonTextReader, он будет выдавать тебе в цикле по одному токену, и тебе достаточно закодировать логику, учитывая по ходу на каком уровне находится твой декодер либо надеяться на то что структура json всегда верная и не требует валидации

int[] собирай уже сам

в этом случае ты сможешь обрабатывать огромный json файл массив последовательно
тут пример как вручную не следить за объектом в процессе
Ответ написан
vabka
@vabka Куратор тега C#
Токсичный шарпист
Десериализуй в объекты, а затем делай Select.
Ответ написан
Комментировать
@mvv-rus
Настоящий админ AD и ненастоящий программист
Используйте LINQ:
Если поле code в типе, получаемом после десериализации имеет тип int (по уму должно быть так, но я с NewtonSoft JSON не работал, поэтому не уверен в таких подробностях), просто допишите к выражению для десериализации
.Select(x=>x.code).ToArray();
Если тип, паче чаяния, другой - преобразуйте результат, возвращаемый лямбда-функцией в Select к int (для строки это будет Int32.Parse(x.code)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы