...

Linq запросы в бизнес-процессах

Тема в разделе "Разработчикам", создана пользователем m.soloveva, 23 апр 2018.

  1. m.soloveva

    m.soloveva New Member

    Добрый день!
    Подключаюсь к API, ответ оттуда приходит только в формате Json. Чтобы вытащить все, что нужно, пишу Linq. При отладке процесса получаю ошибку на select new. Текст ошибки: "Значение было недопустимо малым или недопустимо большим для Int32". Подскажите, пожалуйста, в чем проблема? Как это можно исправить?

    JObject dic = JObject.Parse (sr.ReadToEnd ());
    // LINQ To JSON (парсинг ответа)
    var example = from c in dic ["fines"].Children()
    select new {
    enable_discount = c["enable_discount"].Value<bool>(),
    date_discount = c["date_discount"].Value<string>(),
    date_decision = c["date_decision"].Value<string>(),
    ...
    };
     
  2. arkarimov

    arkarimov Member

    1. Одно из значений анонимного типа который создаете путем select new имеет тип int и прилетевшее из json значение не может быть приведено к нему, т..е искать строку вида
    c["xxx"].Value<int>() и смотреть что в json там приезжает.
    2. Вручную парсить json можно, но эффективнее парсить при помощи готовых библиотек, например включенного в ELMA Newtonsoft json, там есть методы позволяющие в одну строку десериализовать json в объект нужного типа
     
  3. m.soloveva

    m.soloveva New Member

    Огромное спасибо! Ошибку нашла. А вот десериализовать json в объект нужного типа в прошлый раз не получилось, поэтому и стала парсить вручную, попробую еще раз.
     

Поделиться: