Ошибка при десериализации ответа.
|
Индекс форума » Компонент МЕРКУРИЙ |
| Автор | Сообщение |
|---|---|
|
Тема: Ошибка при десериализации ответа.
|
|
|
Гасан
Зарегистрирован: 11/11/2017 13:13:22 Оффлайн
|
Ошибка при десериализации ответа модуль выдает ошибку. У кого то было такая ошибка или кто знает ? |
|
|
|
|
Тема: Ошибка при десериализации ответа.
|
|
|
egais2018
Зарегистрирован: 08/06/2018 15:12:57 Оффлайн
|
Это точно кто знает такой ошибка странный. В понятно какой модуле ее вижу. Было у кого-то? XD |
|
|
|
|
Тема: Re:Ошибка при десериализации ответа.
|
|
|
Гасан
Зарегистрирован: 11/11/2017 13:13:22 Оффлайн
|
В модуле меркурий начало писать |
|
|
|
|
Тема: Re:Ошибка при десериализации ответа.
|
|
|
Yoreg07
Зарегистрирован: 21/07/2016 06:41:02 Оффлайн
|
Ну не знаю … у меня всё работает |
|
|
|
|
Тема: Ошибка при десериализации ответа.
|
|
|
hawksib
Зарегистрирован: 04/08/2017 08:44:20 Оффлайн
|
у меня всякие разные ошибки были, я всё исправил |
|
|
|
|
|
|
Индекс форума » Компонент МЕРКУРИЙ |
|
Перейти:
|
Столкнулся с ошибкой при десериализации ответа от api.vk.com.
static void Main(string[] args)
{
string url = "https://api.vk.com/method/messages.getChatUsers?chat_id=101&v=5.74&access_token=тут мой токен";
HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;
if (req != null)
{
HttpWebResponse res = req.GetResponse() as HttpWebResponse;
StreamReader stream = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("utf-8"));
Console.WriteLine(stream.ReadToEnd());
var item = JsonConvert.DeserializeObject<RootObject>(stream.ReadToEnd());
Console.WriteLine(item.users[1]);
}
Console.ReadKey();
}
public class RootObject
{
public List<int> users { get; set; }
}

Сам ответ от API:
{"response":[218803928,317010917,179681066,173431607,356408021,421702993,295920106,121375474,261654407,322744642,307578021,384790605,223522189,141711244,286562711,204691290,343742090,474494798,237102289,478504542,177436279,196611542,66950243,189052497,331084770,421534614,225194958,224984110,204442992,48511162,436569015,253920936,460621648]}
- 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
- Remove From My Forums
-
Question
-
Hi, I am developing an app which user WCF data service. The JSON response contains «&id» and «$ref» keywords. I want to deserialize that JSON with NewtonSoft lib. So I tried to develop classes for JSON so I used www.json2csharp.com
but it doesn’t give me proper class structures. So I update classes with this[DataMember(Name = "$id", EmitDefaultValue = false)] public string Id { get; set; }Then also not working. While searching I found
a way, but it uses JavaScript. So please help to solve my this problem. Web service uses entity framework and it’s WCF Service Library project. The sample JSON response is like
this.-
Changed type
Monday, February 4, 2013 11:12 AM
-
Changed type
Answers
-
I am not having problem with @, & and $ chars but I was facing problems when there is foreign key reference is in JSON response. I need class definitions for
that so I added entity framework’s class definition DLL but it didn’t support in Windows Store App. Then I added manually classes but then I get to know that System.Collections.Generic.List<T>
ForEach method is missing in Windows 8 Runtime, hence I added the extension method and it is working now. I will post here if I found any other error.-
Marked as answer by
Matt SmallMicrosoft employee, Moderator
Tuesday, February 12, 2013 4:49 PM
-
Marked as answer by
- Remove From My Forums
-
Question
-
Hi, I am developing an app which user WCF data service. The JSON response contains «&id» and «$ref» keywords. I want to deserialize that JSON with NewtonSoft lib. So I tried to develop classes for JSON so I used www.json2csharp.com
but it doesn’t give me proper class structures. So I update classes with this[DataMember(Name = "$id", EmitDefaultValue = false)] public string Id { get; set; }Then also not working. While searching I found
a way, but it uses JavaScript. So please help to solve my this problem. Web service uses entity framework and it’s WCF Service Library project. The sample JSON response is like
this.-
Changed type
Monday, February 4, 2013 11:12 AM
-
Changed type
Answers
-
I am not having problem with @, & and $ chars but I was facing problems when there is foreign key reference is in JSON response. I need class definitions for
that so I added entity framework’s class definition DLL but it didn’t support in Windows Store App. Then I added manually classes but then I get to know that System.Collections.Generic.List<T>
ForEach method is missing in Windows 8 Runtime, hence I added the extension method and it is working now. I will post here if I found any other error.-
Marked as answer by
Matt SmallMicrosoft employee, Moderator
Tuesday, February 12, 2013 4:49 PM
-
Marked as answer by
|
MakcPletnev 41 / 37 / 9 Регистрация: 01.02.2014 Сообщений: 825 |
||||||||
|
1 |
||||||||
Ошибка десериализации объекта05.04.2016, 00:24. Показов 5630. Ответов 9 Метки нет (Все метки)
Ошибка десериализации объекта типа RespGroup1. Символы с шестнадцатеричными значениями 0xFFFE и 0xFFFF являются недопустимыми В общем, не может дисериализировать такой вот JSON (Именно этот пример, плейлист большинства дисериализирует без проблем, 1 раз такая проблема):
Код:
Помогите пожалуйста, добрые люди) Добавлено через 13 секунд Добавлено через 9 минут
__________________
0 |
|
Jason 525 / 487 / 98 Регистрация: 25.12.2011 Сообщений: 1,176 |
||||
|
05.04.2016, 00:37 |
2 |
|||
|
Просили — помогаю
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 |
public class Root {
public double ACCESS_BALANCE { get; set; }
}
string url = "url";
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
string response ;
using (StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream()))
{
response = streamReader.ReadToEnd();
}
Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(response);
Запрос проходит , ответ в json приходит в виде «ACCESS_BALANCE:555.55»
При попытке десериализации выскакивает ошибка:
Unhandled exception. Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: A. Path '', line 0, position 0.
at Newtonsoft.Json.JsonTextReader.ParseValue()
at Newtonsoft.Json.JsonReader.ReadAndMoveToContent()
at Newtonsoft.Json.JsonReader.ReadForType(JsonContract contract, Boolean hasConverter)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at Project.NewBaseType.Main(String[] args)
-
На главную
-
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.
Я решил эту проблему, изменив формат одного из параметров запроса. Дата была передана в виде текста, и службе не удалось проанализировать предоставленный формат даты.
Не уверен, почему служба ожидала дату в виде строки, но в то время это выходило за рамки.
. Да вроде ничего сложного, Items — будет массив классов: