Ошибка при десериализации ответа

Ошибка при десериализации ответа.

Ошибка при десериализации ответа.
 XML


Индекс форума
» Компонент МЕРКУРИЙ
Автор Сообщение

[Post New]20/12/2019 12:09:19

    

Тема: Ошибка при десериализации ответа.

[Up]

Гасан

Зарегистрирован: 11/11/2017 13:13:22
Сообщений: 69

Оффлайн



Ошибка при десериализации ответа модуль выдает ошибку. У кого то было такая ошибка или кто знает ?


[Post New]20/12/2019 12:23:06

    

Тема: Ошибка при десериализации ответа.

[Up]

egais2018

Зарегистрирован: 08/06/2018 15:12:57
Сообщений: 282

Оффлайн



Это точно кто знает такой ошибка странный. В понятно какой модуле ее вижу. Было у кого-то? XD


[Post New]20/12/2019 12:26:08

    

Тема: Re:Ошибка при десериализации ответа.

[Up]

Гасан

Зарегистрирован: 11/11/2017 13:13:22
Сообщений: 69

Оффлайн



В модуле меркурий начало писать


[Post New]20/12/2019 12:38:21

    

Тема: Re:Ошибка при десериализации ответа.

[Up]

Yoreg07

Зарегистрирован: 21/07/2016 06:41:02
Сообщений: 570

Оффлайн



Ну не знаю … у меня всё работает


[Post New]21/12/2019 15:33:43

    

Тема: Ошибка при десериализации ответа.

[Up]

hawksib

[Avatar]

Зарегистрирован: 04/08/2017 08:44:20
Сообщений: 179

Оффлайн


Гасан wrote:Ошибка при десериализации ответа модуль выдает ошибку. У кого то было такая ошибка или кто знает ?

у меня всякие разные ошибки были, я всё исправил


 


Индекс форума
» Компонент МЕРКУРИЙ

Перейти: 

 

MakcPletnev

41 / 37 / 9

Регистрация: 01.02.2014

Сообщений: 825

1

Ошибка десериализации объекта

05.04.2016, 00:24. Показов 5723. Ответов 9

Метки нет (Все метки)


Ошибка десериализации объекта типа RespGroup1. Символы с шестнадцатеричными значениями 0xFFFE и 0xFFFF являются недопустимыми

В общем, не может дисериализировать такой вот JSON (Именно этот пример, плейлист большинства дисериализирует без проблем, 1 раз такая проблема):

JSON
1
http://rghost.ru/private/6f7ljsrHg/3a189b713a9234a1c8060046ce5eb779 - на форум не влезло...

Код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[DataContract]
        public class RespGroup1
        {
            [DataMember(Name = "response")]
            public RespGroup2[] response { get; set; }
        }
        [DataContract]
        public class RespGroup2
        {
            [DataMember(Name = "count")]
            public string count { get; set; }
            [DataMember(Name = "items")]
            public Person[] items { get; set; }
        }
        [DataContract]
        public class Person
        {
            /*[DataMember(Name = "id")]
            public string id { get; set; }*/
 
            [DataMember(Name = "owner_id")]
            public string owner_id { get; set; }
            [DataMember(Name = "artist")]
            public string artist { get; set; }
            [DataMember(Name = "title")]
            public string title { get; set; }
 
            /*[DataMember(Name = "duration")]
            public string duration { get; set; }
            [DataMember(Name = "date")]
            public string date { get; set; }
            [DataMember(Name = "url")]
            public string url { get; set; }
            [DataMember(Name = "lyrics_id")]
            public string lyrics_id { get; set; }
            [DataMember(Name = "genre_id")]
            public string genre_id { get; set; }*/
        }
 
DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(RespGroup1));
RespGroup1 person = (RespGroup1)json.ReadObject(new System.IO.MemoryStream(Encoding.Unicode.GetBytes(html)));

Помогите пожалуйста, добрые люди)

Добавлено через 13 секунд
Кому не сложно, подскажите…

Добавлено через 9 минут
Ev_Hyper, была бы очень кстати твоя помощь сейчас)

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Jason

525 / 487 / 98

Регистрация: 25.12.2011

Сообщений: 1,176

05.04.2016, 00:37

2

Просили — помогаю . Да вроде ничего сложного, Items — будет массив классов:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
        static void Main(string[] args)
        {
            DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(Music));
            string fileContent = System.IO.File.ReadAllText(@"E:1.txt");
            Music music = (Music)json.ReadObject(new System.IO.MemoryStream(Encoding.UTF8.GetBytes(fileContent)));
            Console.WriteLine(music.items[1].artist);
            Console.ReadLine();
        }
 
        [DataContract]
        public class Music
        {
            [DataMember(Name = "count")]
            public string count { get; set; }
            [DataMember(Name = "items")]
            public Item[] items { get; set; }
 
            [DataContract]
            public class Item
            {
                [DataMember(Name = "id")]
                public string id { get; set; }
                [DataMember(Name = "owner_id")]
                public string owner_id { get; set; }
                [DataMember(Name = "artist")]
                public string artist { get; set; }
                [DataMember(Name = "title")]
                public string title { get; set; }
                [DataMember(Name = "duration")]
                public string duration { get; set; }
                [DataMember(Name = "date")]
                public string date { get; set; }
                [DataMember(Name = "url")]
                public string url { get; set; }
                [DataMember(Name = "lyrics_id")]
                public string lyrics_id { get; set; }
                [DataMember(Name = "genre")]
                public string genre { get; set; }
            }
        }

P.S. Только я удалил — {«response»:[ в начале и ]} в конце (для удобства).



0



41 / 37 / 9

Регистрация: 01.02.2014

Сообщений: 825

05.04.2016, 00:44

 [ТС]

3

Jason, попробуй это: https://yadi.sk/d/YG60-YYiqjhe9
Вот тут точно выбьет ошибку… Только что выковырнул кусок

Добавлено через 4 минуты
p.sы, там несколько блоков



0



525 / 487 / 98

Регистрация: 25.12.2011

Сообщений: 1,176

05.04.2016, 00:45

4

Это уже издевательство, был пример выше, я его разобрал, а тут на 6 метров не пойми чего, я это нормально даже прочитать не могу.



0



41 / 37 / 9

Регистрация: 01.02.2014

Сообщений: 825

05.04.2016, 00:46

 [ТС]

5

Jason, это тот же самый json , с описанием из шапки. Фишка в том, что выдает ошибку
«Символы с шестнадцатеричными значениями 0xFFFE и 0xFFFF являются недопустимыми», надо решить вопрос именно с ней…



0



Jason

525 / 487 / 98

Регистрация: 25.12.2011

Сообщений: 1,176

05.04.2016, 01:59

6

Вот так нужно было урезать структуру:

JSON
1
{"response":[{"count":1,"items":[{"id":456239020,"owner_id":35541739,"artist":"Response 1 - 1","title":"Du bist nicht allein","duration":241,"date":1459553197,"url":"http://cs4505.vk.me/u690598/audios/f1f28c909424.mp3?extra=fSUfByfOF6k73qvvAYQ6YdFm0hz-srnBbJtn1VsuTJQTMkm0O-Sw1HNGmM17MQoXoEpuNVSnGlRWpSFwxVH4OYJGY7SSGX6iZFFzTPFIdYoHK77MCKZFLm-AVxt6CX0SvMAoYRbvHDwQ","genre_id":18}]},{"count":2,"items":[{"id":456239020,"owner_id":35541739,"artist":"Response 2 - 1","title":"Du bist nicht allein","duration":241,"date":1459553197,"url":"http://cs4505.vk.me/u690598/audios/f1f28c909424.mp3?extra=fSUfByfOF6k73qvvAYQ6YdFm0hz-srnBbJtn1VsuTJQTMkm0O-Sw1HNGmM17MQoXoEpuNVSnGlRWpSFwxVH4OYJGY7SSGX6iZFFzTPFIdYoHK77MCKZFLm-AVxt6CX0SvMAoYRbvHDwQ","genre_id":18},{"id":456239020,"owner_id":35541739,"artist":"Response 2 - 2","title":"Du bist nicht allein","duration":241,"date":1459553197,"url":"http://cs4505.vk.me/u690598/audios/f1f28c909424.mp3?extra=fSUfByfOF6k73qvvAYQ6YdFm0hz-srnBbJtn1VsuTJQTMkm0O-Sw1HNGmM17MQoXoEpuNVSnGlRWpSFwxVH4OYJGY7SSGX6iZFFzTPFIdYoHK77MCKZFLm-AVxt6CX0SvMAoYRbvHDwQ","genre_id":18}]}]}

Так, а теперь код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
        static void Main(string[] args)
        {
            DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(Music));
            string fileContent = System.IO.File.ReadAllText(@"E:1.txt");
            Music music = (Music)json.ReadObject(new System.IO.MemoryStream(Encoding.UTF8.GetBytes(fileContent)));
            Console.WriteLine(music.response[0].items[0].artist);
            Console.WriteLine(music.response[1].items[1].artist);
            Console.ReadLine();
        }
 
        [DataContract]
        public class Music
        {
 
            [DataMember(Name = "response")]
            public Response[] response { get; set; }
 
            [DataContract]
            public class Response
            {
                [DataMember(Name = "count")]
                public string count { get; set; }
                [DataMember(Name = "items")]
                public Item[] items { get; set; }
 
                [DataContract]
                public class Item
                {
                    [DataMember(Name = "id")]
                    public string id { get; set; }
                    [DataMember(Name = "owner_id")]
                    public string owner_id { get; set; }
                    [DataMember(Name = "artist")]
                    public string artist { get; set; }
                    [DataMember(Name = "title")]
                    public string title { get; set; }
                    [DataMember(Name = "duration")]
                    public string duration { get; set; }
                    [DataMember(Name = "date")]
                    public string date { get; set; }
                    [DataMember(Name = "url")]
                    public string url { get; set; }
                    [DataMember(Name = "lyrics_id")]
                    public string lyrics_id { get; set; }
                    [DataMember(Name = "genre")]
                    public string genre { get; set; }
                }
            }
        }

P.S.

Цитата
Сообщение от MakcPletnev
Посмотреть сообщение

Символы с шестнадцатеричными значениями 0xFFFE и 0xFFFF являются недопустимыми», надо решить вопрос именно с ней…

А на счет этого, не нужно файлы сохранять в формате Юникод и т.п. Сохраните файл в ANSI и проверяем…

Либо пробовать что-то вроде этого:

C#
1
2
3
4
5
6
7
8
9
10
11
        static void Main(string[] args)
        {
            DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(Music));
            string fileContent = System.IO.File.ReadAllText(@"E:1.txt");
            byte[] b = Encoding.Unicode.GetBytes(fileContent);
            b = Encoding.Convert(Encoding.Unicode, Encoding.ASCII, b);
            Music music = (Music)json.ReadObject(new System.IO.MemoryStream(b));
            Console.WriteLine(music.response[0].items[0].artist);
            Console.WriteLine(music.response[1].items[1].artist);
            Console.ReadLine();
        }



0



41 / 37 / 9

Регистрация: 01.02.2014

Сообщений: 825

06.04.2016, 21:04

 [ТС]

7

Jason, из-за этого не поддерживается кириллица, я пробовал уже
Есть еще варианты?

Добавлено через 1 минуту
русские символы отображаются в виде ‘?’



0



975 / 870 / 350

Регистрация: 26.04.2012

Сообщений: 2,647

07.04.2016, 02:36

8

Я большой JSON обычно не десериализую, а использую при при помощи библиотеки Newtonsoft.Json и тамошнего класса JToken.



0



41 / 37 / 9

Регистрация: 01.02.2014

Сообщений: 825

26.07.2016, 11:06

 [ТС]

9

EvilFromHell, может расскажете как?



0



Master of Orion

Эксперт .NET

6094 / 4950 / 905

Регистрация: 10.07.2011

Сообщений: 14,522

Записей в блоге: 5

27.07.2016, 00:06

10

EvilFromHell, забавно, что я в DataContractSerializer при сериализации в XML ловил точно такую же ошибку. Решалось просто вырезанием всего, что не проходит проверку XmlConvert.IsXmlChar. Вполне возможно, что JSON реально не ест эти символы (это именно некорректные символы, а не кириллица, например если суррогатная пара применена с символом, с которой её использование недопустимо). Не уверен, что JSON.Net поможет, хотя я в любом случае его использую во всех случаях работы с JSON. Слишком удобно чтобы отказываться.



1



  • Remove From My Forums
  • Question

  • I m consuming a third party WCF service. The get menthod is taking request class object and its return type is a response class object.I m getting the above error when calling the get method.I have increased the
    maxStringContentLength and maxdepth
    to 2147483647 then also i m getting same error.Here is the Stack Trace:

    Thanks in advance…

    Server stack trace:
       at System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, XmlSerializer serializer, MessagePartDescription returnPart, MessagePartDescriptionCollection bodyParts, Object[]
    parameters, Boolean isRequest)
       at System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, String action, MessageDescription messageDescription, Object[] parameters, Boolean isRequest)
       at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest)
       at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeReply(Message message, Object[] parameters)
       at System.ServiceModel.Dispatcher.ProxyOperationRuntime.AfterReply(ProxyRpc& rpc)
       at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
       at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
       at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
       at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
       at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

    Exception rethrown at [0]:
       at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
       at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
       at ContractName.getmethod(request request)
      

    If anybody here has any ideas that might help
    I would greatly appreciate it.  This is fairly new to me.

Answers

    • Marked as answer by

      Friday, February 3, 2012 9:15 AM

  • Is this 3rd party WCF service workable somewhere else? I mean is this getReport working in some other application or not? I feel like the response object must be having some problem like

    — Some member which cannot be serialized properly.

    You should check with the WCF service provider (vendor)


    ViBi

    • Marked as answer by
      Yi-Lun Luo
      Friday, February 3, 2012 9:15 AM

  • Remove From My Forums
  • Question

  • I m consuming a third party WCF service. The get menthod is taking request class object and its return type is a response class object.I m getting the above error when calling the get method.I have increased the
    maxStringContentLength and maxdepth
    to 2147483647 then also i m getting same error.Here is the Stack Trace:

    Thanks in advance…

    Server stack trace:
       at System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, XmlSerializer serializer, MessagePartDescription returnPart, MessagePartDescriptionCollection bodyParts, Object[]
    parameters, Boolean isRequest)
       at System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, String action, MessageDescription messageDescription, Object[] parameters, Boolean isRequest)
       at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest)
       at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeReply(Message message, Object[] parameters)
       at System.ServiceModel.Dispatcher.ProxyOperationRuntime.AfterReply(ProxyRpc& rpc)
       at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
       at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
       at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
       at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
       at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

    Exception rethrown at [0]:
       at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
       at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
       at ContractName.getmethod(request request)
      

    If anybody here has any ideas that might help
    I would greatly appreciate it.  This is fairly new to me.

Answers

    • Marked as answer by

      Friday, February 3, 2012 9:15 AM

  • Is this 3rd party WCF service workable somewhere else? I mean is this getReport working in some other application or not? I feel like the response object must be having some problem like

    — Some member which cannot be serialized properly.

    You should check with the WCF service provider (vendor)


    ViBi

    • Marked as answer by
      Yi-Lun Luo
      Friday, February 3, 2012 9:15 AM

Бывают ситуации, когда пользователь программы 1С сталкивается с появлением ошибки – «Ошибка десериализации контактной информации не указан ожидаемый тип». Возникает она в основном при переходе на новую редакцию программы или обновлении конфигурации и связана с некорректной конвертацией справочника «Виды контактной информации», а появляется при попытке занести данные.

Данные «Контактная информация» задействованы в справочниках «Организация», «Подразделения организации», «Контрагенты», «Контактные лица». Их можно просмотреть, открыв раздел «Справочники», используя пункт меню «Все функций». Если этот раздел не доступен, включить его можно в разделе «Сервис» — «Параметры».

Рис.1 Контактная информация
Рис.1 Контактная информация
Рис.2 Контактная информация
Рис.2 Контактная информация

Пример заполнения «Контактной информации» в справочнике «Контрагенты».

Рис.3 «Контактная информация» в справочнике «Контрагенты»
Рис.3 «Контактная информация» в справочнике «Контрагенты»

Если мы откроем и посмотрим настройку элемента справочника «Контактная информация», например, «Юридический адрес», то мы увидим, что в поле «Тип» установлено значение «Адрес». Это верное значение, для данного вида информации.

Рис.4 Юридический адрес
Рис.4 Юридический адрес

Но, возможно, здесь некорректное отображение по каким-либо причинам, например, в процессе переноса данных из старой версии в новую могли быть перенесены лишние элементы. Их можно удалить. Также надо проверить остальные виды контактной информации, чтобы там не было пустых и неправильно заполненных полей. В случае обнаружения недочета, его также необходимо устранить.

Открыв любой вид контактной информации, мы видим, что в поле нет кнопки выбора, чтобы сменить (или установить в случае отсутствия) тип, но можно выйти из ситуации, используя копирование элемента и установку пометки на удаления неправильного элемента. В этом случае кнопка выбора типа информации активна.

Рис.5 Кнопка выбора типа информации активна
Рис.5 Кнопка выбора типа информации активна

После корректировки типа представления информации ошибка десериализации появляться не будет.

Еще одним способом устранения проблемы (более простым) является использование обработки по установке типа контактной информации «УстановкаТиповИВидовКИ». Ее можно найти в интернете, она написана сторонними разработчиками и для обычных форм, и для управляемых. С ее помощью можно изменить тип любого элемента справочника «Контактная информация».

Рис.6 УстановкаТиповИВидовКИ
Рис.6 УстановкаТиповИВидовКИ

Выбираем элемент, который необходимо исправить, задаем правильный тип и нажимаем кнопку «Установить тип».

Рис.7 Установить тип
Рис.7 Установить тип

С изменением типа представления контактной информации ошибка появляться не будет. При этом необходимо обратить внимание, на какой элемент программа «ругается» – это может быть не только адрес, но и, например, телефон, адрес электронной почты. Тогда действие производится с указанным элементом.

  1. На главную

  2. How

  3. Ошибка десериализации тела сообщения запроса на операцию

Ошибка десериализации тела сообщения запроса на операцию

  • 2023
  • Редактор:
    Christopher Sullivan |
    Написать мне

Я пишу адаптер службы для использования веб-служб, размещенных другим поставщиком (Pega). Я не могу сменить эту услугу. Когда я вызываю метод, я получаю сообщение об ошибке:

«Ошибка десериализации тела сообщения запроса на операцию»

Я пробовал увеличить maxStringContentLength и все такое. Ничего не получилось. Изучая ответ XML, я вижу пустые значения для нескольких переменных типа long и int, я считаю, что это причина.

Есть ли какое-нибудь исправление для этого?

  • 1 Выполняется десериализация. Извините за автокоррекцию.
  • Эта ссылка может быть вам полезна marcipsen.wordpress.com/2009/02/25/…
  • Спасибо, Картик, но я уже пытался изменить настройки в app.config. Как я уже упоминал, я считаю, что причиной могут быть пустые значения для нескольких переменных типа long и int в ответном XML. Требуется исправление для этого со стороны клиента.
  • Есть ли внутреннее исключение с более подробной информацией?
  • Единственное, что имеет смысл: в System.Number.ParseInt64 (значение String, параметры NumberStyles, NumberFormatInfo numfmt) в System.Xml.XmlConvert.ToInt64 (String s)

Это было решено после удаления пустых тегов со стороны службы. На стороне клиента .Net решение не найдено.

  • У меня конец службы настроен на отправку 0 вместо нулевого элемента.
  • Спасибо. Я исправил свою проблему двумя вещами: 1) изменил тип возвращаемого значения операции с простого строкового типа на пользовательский тип класса, украшенный DataContractAttribute. 2) Я удалил HttpWatch 7.0.22, который мешает вызову jQuery. Именно HttpWatch заблокировал отправку аргумента операции.
  • @PAVITRA — У меня та же проблема, и я не мог понять, как решить, следуя вашим инструкциям: как вы на самом деле это сделали? Какие пустые теги? Из какого файла?
  • В ответ у меня были пустые значения для нескольких полей типа long и int, не допускающих значения NULL. Обычно этого не должно происходить. При попытке десериализации этого ответа возникла ошибка. Не удалось найти исправления от .NET для этого. Поэтому моим последним вариантом было изменить стороннюю службу. Я изменил его, чтобы отправлять 0 вместо пустых тегов для длинных полей int.

Я решил эту проблему, изменив формат одного из параметров запроса. Дата была передана в виде текста, и службе не удалось проанализировать предоставленный формат даты.

Не уверен, почему служба ожидала дату в виде строки, но в то время это выходило за рамки.

Hello,

I am trying to get the following JSON response into a list so I can reference on value and get another :

{
    "Result": [
        {
            "Key": "19e848a2-cbb6-4c72-8e24-05ce47da7754",
            "Name": "Bistro"
        },
        {
            "Key": "d274591a-06fd-4d50-a973-5a629a3a6d3a",
            "Name": "Sports Bar"
        },
        {
            "Key": "b648abd8-da53-4089-a7f9-5ef7ddece38c",
            "Name": "Constable Suite"
        },
        {
            "Key": "69a4b8b9-427d-4cca-b62a-62e6cbc8a27c",
            "Name": "Haywain Suite"
        },
        {
            "Key": "142a6bc3-86ac-4953-a022-8641f318ffa0",
            "Name": "Hotel Lounge Main Bar"
        },
        {
            "Key": "6294ae4e-273b-408a-8e5f-df5853badf90",
            "Name": "Garden Room"
        },
        {
            "Key": "f0516ab6-9bce-4f35-aa40-f8f49c464023",
            "Name": "Gallery Grill"
        }
    ],
    "RID": "1",
    "CloudDateTime": "2020-07-04T08:16:36.0000000Z",
    "Success": true,
    "Message": ""
}

and I have defined my classes as

public class Dept
{
  public Result _Result { get; set; }
  public string _RID { get; set; }
  public DateTime _CloudDateTime { get; set; }
  public bool _Success { get; set; }
  public string _Message { get; set; }
}

public class Result
{
  public string _Key { get; set; }
  public string _Name { get; set; }
}

but, when i use the following to grab the data :

List<Dept> Departments = JsonConvert.DeserializeObject<List<Dept>>(response.Content);
            
foreach (var item in Departments)
                {
                var _Key = item._Result._Key;
                var _Name = item._Result._Name;
                richTextBox5.AppendText(_Key + " - " + _Name + Environment.NewLine);
                }

I get the message

Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[myprogram.Form1+Dept]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.
To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Result', line 1, position 10.

if I change          public Results _Result {get; set;}             to             public List<Result> _Result { get; set; }

I then get swiggles un der _Key and _Name

                var _Key = item._Result._Key;
                var _Name = item._Result._Name;

saying «does not contain a definition for «_Key» ….»

How do I get eh response into a list so I can then reference the name to the key  ie : 

if(_Name == "Bistro")
{
var deptKey = theCorrespondingDeptKeyFromList
MessageBox.show(_Name + " " + deptKey)
}

thanks :-)

Hello,

I am trying to get the following JSON response into a list so I can reference on value and get another :

{
    "Result": [
        {
            "Key": "19e848a2-cbb6-4c72-8e24-05ce47da7754",
            "Name": "Bistro"
        },
        {
            "Key": "d274591a-06fd-4d50-a973-5a629a3a6d3a",
            "Name": "Sports Bar"
        },
        {
            "Key": "b648abd8-da53-4089-a7f9-5ef7ddece38c",
            "Name": "Constable Suite"
        },
        {
            "Key": "69a4b8b9-427d-4cca-b62a-62e6cbc8a27c",
            "Name": "Haywain Suite"
        },
        {
            "Key": "142a6bc3-86ac-4953-a022-8641f318ffa0",
            "Name": "Hotel Lounge Main Bar"
        },
        {
            "Key": "6294ae4e-273b-408a-8e5f-df5853badf90",
            "Name": "Garden Room"
        },
        {
            "Key": "f0516ab6-9bce-4f35-aa40-f8f49c464023",
            "Name": "Gallery Grill"
        }
    ],
    "RID": "1",
    "CloudDateTime": "2020-07-04T08:16:36.0000000Z",
    "Success": true,
    "Message": ""
}

and I have defined my classes as

public class Dept
{
  public Result _Result { get; set; }
  public string _RID { get; set; }
  public DateTime _CloudDateTime { get; set; }
  public bool _Success { get; set; }
  public string _Message { get; set; }
}

public class Result
{
  public string _Key { get; set; }
  public string _Name { get; set; }
}

but, when i use the following to grab the data :

List<Dept> Departments = JsonConvert.DeserializeObject<List<Dept>>(response.Content);
            
foreach (var item in Departments)
                {
                var _Key = item._Result._Key;
                var _Name = item._Result._Name;
                richTextBox5.AppendText(_Key + " - " + _Name + Environment.NewLine);
                }

I get the message

Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[myprogram.Form1+Dept]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.
To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Result', line 1, position 10.

if I change          public Results _Result {get; set;}             to             public List<Result> _Result { get; set; }

I then get swiggles un der _Key and _Name

                var _Key = item._Result._Key;
                var _Name = item._Result._Name;

saying «does not contain a definition for «_Key» ….»

How do I get eh response into a list so I can then reference the name to the key  ie : 

if(_Name == "Bistro")
{
var deptKey = theCorrespondingDeptKeyFromList
MessageBox.show(_Name + " " + deptKey)
}

thanks :-)

Понравилась статья? Поделить с друзьями:
  • Ошибка при выполнении операции проверьте аутентификационные данные честный знак что значит
  • Ошибка при декодировании заполнения oaep windows admin center
  • Ошибка при выполнении операции над данными 22012 error division by zero 1с
  • Ошибка при вычислении функции библиотекафункцийобмена получить характеристики обязательства
  • Ошибка при выполнении операции запись не найдена честный знак