Ошибка при десериализации ответа.
Индекс форума » Компонент МЕРКУРИЙ |
Автор | Сообщение |
---|---|
20/12/2019 12:09:19 Тема: Ошибка при десериализации ответа.
|
|
Гасан
Зарегистрирован: 11/11/2017 13:13:22 Оффлайн
|
Ошибка при десериализации ответа модуль выдает ошибку. У кого то было такая ошибка или кто знает ? |
|
|
20/12/2019 12:23:06 Тема: Ошибка при десериализации ответа.
|
|
egais2018
Зарегистрирован: 08/06/2018 15:12:57 Оффлайн
|
Это точно кто знает такой ошибка странный. В понятно какой модуле ее вижу. Было у кого-то? XD |
|
|
20/12/2019 12:26:08 Тема: Re:Ошибка при десериализации ответа.
|
|
Гасан
Зарегистрирован: 11/11/2017 13:13:22 Оффлайн
|
В модуле меркурий начало писать |
|
|
20/12/2019 12:38:21 Тема: Re:Ошибка при десериализации ответа.
|
|
Yoreg07
Зарегистрирован: 21/07/2016 06:41:02 Оффлайн
|
Ну не знаю … у меня всё работает |
|
|
21/12/2019 15:33:43 Тема: Ошибка при десериализации ответа.
|
|
hawksib
Зарегистрирован: 04/08/2017 08:44:20 Оффлайн
|
у меня всякие разные ошибки были, я всё исправил |
|
|
|
Индекс форума » Компонент МЕРКУРИЙ |
Перейти:
|
MakcPletnev 41 / 37 / 9 Регистрация: 01.02.2014 Сообщений: 825 |
||||||||
1 |
||||||||
Ошибка десериализации объекта05.04.2016, 00:24. Показов 5723. Ответов 9 Метки нет (Все метки)
Ошибка десериализации объекта типа RespGroup1. Символы с шестнадцатеричными значениями 0xFFFE и 0xFFFF являются недопустимыми В общем, не может дисериализировать такой вот JSON (Именно этот пример, плейлист большинства дисериализирует без проблем, 1 раз такая проблема):
Код:
Помогите пожалуйста, добрые люди) Добавлено через 13 секунд Добавлено через 9 минут
__________________
0 |
Jason 525 / 487 / 98 Регистрация: 25.12.2011 Сообщений: 1,176 |
||||
05.04.2016, 00:37 |
2 |
|||
Просили — помогаю . Да вроде ничего сложного, Items — будет массив классов:
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 минуты
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 , с описанием из шапки. Фишка в том, что выдает ошибку
0 |
Jason 525 / 487 / 98 Регистрация: 25.12.2011 Сообщений: 1,176 |
||||||||||||
05.04.2016, 01:59 |
6 |
|||||||||||
Вот так нужно было урезать структуру:
Так, а теперь код:
P.S.
Символы с шестнадцатеричными значениями 0xFFFE и 0xFFFF являются недопустимыми», надо решить вопрос именно с ней… А на счет этого, не нужно файлы сохранять в формате Юникод и т.п. Сохраните файл в ANSI и проверяем… Либо пробовать что-то вроде этого:
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 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
-
Marked as answer by
-
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
-
Marked as answer by
- 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
-
Marked as answer by
-
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
-
Marked as answer by
Бывают ситуации, когда пользователь программы 1С сталкивается с появлением ошибки – «Ошибка десериализации контактной информации не указан ожидаемый тип». Возникает она в основном при переходе на новую редакцию программы или обновлении конфигурации и связана с некорректной конвертацией справочника «Виды контактной информации», а появляется при попытке занести данные.
Данные «Контактная информация» задействованы в справочниках «Организация», «Подразделения организации», «Контрагенты», «Контактные лица». Их можно просмотреть, открыв раздел «Справочники», используя пункт меню «Все функций». Если этот раздел не доступен, включить его можно в разделе «Сервис» — «Параметры».
Пример заполнения «Контактной информации» в справочнике «Контрагенты».
Если мы откроем и посмотрим настройку элемента справочника «Контактная информация», например, «Юридический адрес», то мы увидим, что в поле «Тип» установлено значение «Адрес». Это верное значение, для данного вида информации.
Но, возможно, здесь некорректное отображение по каким-либо причинам, например, в процессе переноса данных из старой версии в новую могли быть перенесены лишние элементы. Их можно удалить. Также надо проверить остальные виды контактной информации, чтобы там не было пустых и неправильно заполненных полей. В случае обнаружения недочета, его также необходимо устранить.
Открыв любой вид контактной информации, мы видим, что в поле нет кнопки выбора, чтобы сменить (или установить в случае отсутствия) тип, но можно выйти из ситуации, используя копирование элемента и установку пометки на удаления неправильного элемента. В этом случае кнопка выбора типа информации активна.
После корректировки типа представления информации ошибка десериализации появляться не будет.
Еще одним способом устранения проблемы (более простым) является использование обработки по установке типа контактной информации «УстановкаТиповИВидовКИ». Ее можно найти в интернете, она написана сторонними разработчиками и для обычных форм, и для управляемых. С ее помощью можно изменить тип любого элемента справочника «Контактная информация».
Выбираем элемент, который необходимо исправить, задаем правильный тип и нажимаем кнопку «Установить тип».
С изменением типа представления контактной информации ошибка появляться не будет. При этом необходимо обратить внимание, на какой элемент программа «ругается» – это может быть не только адрес, но и, например, телефон, адрес электронной почты. Тогда действие производится с указанным элементом.
-
На главную
-
How
- Ошибка десериализации тела сообщения запроса на операцию
Ошибка десериализации тела сообщения запроса на операцию
- 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