Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 27.11.2017
Сообщений: 3
1

Null reference при десерелизации JSON (Newtonsoft.Json)

27.11.2017, 21:55. Показов 2080. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача: достать из JSON ответа Название фирмы. Использую библиотеку Newtonsoft.Json.
Сам код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Выполняю запрос
HttpWebRequest nameReq = WebRequest.Create(String.Format("https://focus-api.kontur.ru/api3/req?key=3208d29d15c507395db770d0e65f3711e40374df&inn=6663003127")) as HttpWebRequest;
nameReq.Method = "GET";            
nameReq.ContentType = "application/json";
nameReq.Accept = "application/json";
 
//Обрабатываю ответ
var res = nameReq.GetResponse() as HttpWebResponse;
var resStream = res.GetResponseStream();
var stream = new StreamReader(resStream, Encoding.UTF8);
Console.WriteLine(stream.ReadToEnd());   //Тут видно, что JSON получен.
 
//Десерелизуем
RootObject dict = JsonConvert.DeserializeObject<RootObject>(stream.ReadToEnd());
Console.WriteLine(dict.ToString());
Console.WriteLine(dict.UL.legalName.full);
В итоге в dict ничего не возвращается (Null)...


Классы прописал сгенерированные через http://json2csharp.com/

Подкатом классы с сайта.
Кликните здесь для просмотра всего текста
public class LegalName
{
public string @short { get; set; }
public string full { get; set; }
public string date { get; set; }
}

public class RegionName
{
public string topoShortName { get; set; }
public string topoFullName { get; set; }
public string topoValue { get; set; }
}

public class City
{
public string topoShortName { get; set; }
public string topoFullName { get; set; }
public string topoValue { get; set; }
}

public class Street
{
public string topoShortName { get; set; }
public string topoFullName { get; set; }
public string topoValue { get; set; }
}

public class House
{
public string topoShortName { get; set; }
public string topoFullName { get; set; }
public string topoValue { get; set; }
}

public class ParsedAddressRF
{
public string zipCode { get; set; }
public string regionCode { get; set; }
public RegionName regionName { get; set; }
public City city { get; set; }
public Street street { get; set; }
public House house { get; set; }
public string kladrCode { get; set; }
}

public class LegalAddress
{
public ParsedAddressRF parsedAddressRF { get; set; }
public string date { get; set; }
public string firstDate { get; set; }
}

public class RegionName2
{
public string topoShortName { get; set; }
public string topoFullName { get; set; }
public string topoValue { get; set; }
}

public class Street2
{
public string topoShortName { get; set; }
public string topoFullName { get; set; }
public string topoValue { get; set; }
}

public class House2
{
public string topoShortName { get; set; }
public string topoFullName { get; set; }
public string topoValue { get; set; }
}

public class Bulk
{
public string topoValue { get; set; }
public string topoShortName { get; set; }
public string topoFullName { get; set; }
}

public class Flat
{
public string topoValue { get; set; }
public string topoShortName { get; set; }
public string topoFullName { get; set; }
}

public class City2
{
public string topoShortName { get; set; }
public string topoFullName { get; set; }
public string topoValue { get; set; }
}

public class ParsedAddressRF2
{
public string zipCode { get; set; }
public string regionCode { get; set; }
public RegionName2 regionName { get; set; }
public Street2 street { get; set; }
public House2 house { get; set; }
public Bulk bulk { get; set; }
public Flat flat { get; set; }
public string kladrCode { get; set; }
public City2 city { get; set; }
}

public class Branch
{
public ParsedAddressRF2 parsedAddressRF { get; set; }
public string date { get; set; }
public string name { get; set; }
}

public class Status
{
public string statusString { get; set; }
}

public class Head
{
public string fio { get; set; }
public string innfl { get; set; }
public string position { get; set; }
public string date { get; set; }
public string firstDate { get; set; }
}

public class Kpp
{
public string kpp { get; set; }
public string date { get; set; }
}

public class LegalName2
{
public string @short { get; set; }
public string full { get; set; }
public string date { get; set; }
}

public class History
{
public List<Kpp> kpps { get; set; }
public List<LegalName2> legalNames { get; set; }
}

public class UL
{
public string kpp { get; set; }
public string okpo { get; set; }
public string okato { get; set; }
public string okfs { get; set; }
public string oktmo { get; set; }
public string okogu { get; set; }
public string okopf { get; set; }
public string opf { get; set; }
public LegalName legalName { get; set; }
public LegalAddress legalAddress { get; set; }
public List<Branch> branches { get; set; }
public Status status { get; set; }
public string registrationDate { get; set; }
public List<Head> heads { get; set; }
public History history { get; set; }
}

public class Summary
{
public bool greenStatements { get; set; }
}

public class BriefReport
{
public Summary summary { get; set; }
}

public class ContactPhones
{
public int count { get; set; }
}

public class RootObject
{
public string inn { get; set; }
public string ogrn { get; set; }
public string focusHref { get; set; }
public UL UL { get; set; }
public BriefReport briefReport { get; set; }
public ContactPhones contactPhones { get; set; }
}


В чем может быть проблема?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2017, 21:55
Ответы с готовыми решениями:

При работе с Json вылетает ошибка null reference
Есть условие if (WallParser.response.items.attachments.Count == 1) оно проверяет количество...

Парсинг JSON с short.pub посредством NewtonSoft.Json
Доброго времени суток. Имеется сокращалка сайтов short.pub, у которой есть API, который...

Чтение JSON-файла с помощью Newtonsoft.Json
И так, у нас есть JSon-файл вот такого типа: { &quot;objects&quot;: { ...

[Newtonsoft.Json] Парсинг JSON-ответа
Здравствуйте уважаемые участники сообщества &quot;CyberForum&quot; ! У меня возникла небольшая проблема. Я...

2
Заблокирован
27.11.2017, 22:08 2
Мне кажется что идея прочитать поток два раза - плохая.
Попробуйте прочитать в String из потока (вместо вывода в консоль) и десериализовать эту строку.
1
0 / 0 / 0
Регистрация: 27.11.2017
Сообщений: 3
28.11.2017, 09:33  [ТС] 3
Спасибо, помогло!
0
28.11.2017, 09:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2017, 09:33
Помогаю со студенческими работами здесь

Обработка JSON через Newtonsoft.JSON
Всем привет. Частично умею работать с этой либой, но возник вопрос как получить данные из такого...

Разбор JSON, используя Newtonsoft.Json
Добрый день! Подскажите пожалуйста, как десериализовать JSON-ответ следующего вида {&quot;result&quot;:...

Не находится библиотека Newtonsoft.Json при запуске из архива
Добрый день На ПК где стоит визуал студио комьюнити и где пишется приложение - всё работает....

Newtonsoft Json
Всем привет! у меня есть пример Json формата...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru