Десериализация JSON C#

173
01 апреля 2019, 20:40

Есть ответ от сервера вида {"name":"Jonh","lastName":"Smith"},{"name":"Rick","lastName":"Grimes"}. И т.д. всего около 30 объектов. Сейчас реализация далека от идеала,и на один объект идёт один запрос:

var rick = new WebClient().DownloadString("http://127.0.0.1/api/v3/dict/lastname?name=Rick");

Затем десериализую,и отправляю в класс

 public class Rick
    {
        public string name { get; set; }
        public string lastName { get; set; }
    }

И затем спокойно использую в коде дальше. Как можно упростить это? Текущая реализация довольно медленная.

Сервер отдаёт все объекты по запросу http://127.0.0.1/api/v3/dict/lastname

Answer 1

Вероятно, у вас приходит не {"name":"Jonh","lastName":"Smith"},{"name":"Rick","lastName":"Grimes"}, а [ {"name":"Jonh","lastName":"Smith"},{"name":"Rick","lastName":"Grimes"}] - иначе это невалидный json.

Ну, а что тогда сложного? Десериализация в одну строчку при помощи Json.Net:

var data = "[{\"name\":\"Jonh\",\"lastName\":\"Smith\"},{\"name\":\"Rick\",\"lastName\":\"Grimes\"}]";
var deserialized = JsonConvert.DeserializeObject<Rick[]>(data);

Ваш результат:

Как потом обращаться допустим при name=Rick получить его lastName

var obj = deserialized.FirstOrDefault(x => string.Equals(x.name, "Rick"));
obj.Dump();
obj.lastName.Dump();

READ ALSO
Очистка старых данных из textBox

Очистка старых данных из textBox

Как реализовать очистку старой информации из "логового" textBox, к примеру с выше 1000 строк или, там, больше 20 000 символов, не теряя свежие данные?

170
Не могу получить всё, что нужно

Не могу получить всё, что нужно

Я получил все топики, которые относятся к указанному форуму следующим путём:

174
AssetDatabase.GetAssetPath(obj asset) наоборот

AssetDatabase.GetAssetPath(obj asset) наоборот

Так я получу путь до файла, который передам в аргументА как наоборот, получить объект ассета, указав путь до него? Ну как то вроде того

163
ASP NET Core MVC - поместить все div в один ряд

ASP NET Core MVC - поместить все div в один ряд

Создаю ASP NET Core MVC приложение, использую Bootstrap есть три элемента div, нужно вывести все элементы в цикле в один ряд

132