Несоответствие сериализации / десериализации JSON (ASP.Net) - PullRequest
0 голосов
/ 05 января 2010

Когда я вызываю PageMethod на моей странице, сериализованный объект выглядит следующим образом: { "D": { "__ типа": "MyAsembly.MyNamespace.Person", "Название": "улу", "Возраст": 40}}

Это нормально для Javascript, но мой десериализатор .Net этого не поймет:

var result= new JavaScriptSerializer(new SimpleTypeResolver()).Deserialize<Person>(source);

throws System.InvalidOperationException: Операция недопустима из-за текущего состояния объекта.

Теперь проблема в том, что Активатор не может создать объект результата: он не понимает «MyAsembly.MyNamespace.Person» и нуждается в «MyAsembly.MyNamespace.Person, MyAssembly».

Вопрос в том, что мне нужно изменить, чтобы сериализация стала совместимой с десериализацией?

Большое спасибо ула

Ответы [ 2 ]

0 голосов
/ 05 января 2010

Я предполагаю, что

{"d":{"__type":"MyAsembly.MyNamespace.Person","Name":"ulu","Age":40}}

должно быть

{"d":{"__type":"MyAssembly.MyNamespace.Person","Name":"ulu","Age":40}}
0 голосов
/ 05 января 2010

Похоже, вы уже знаете ответ: измените значение свойства __type перед сериализацией объекта на стороне JavaScript.В качестве альтернативы вы можете выполнить замену сериализованных данных, прежде чем проталкивать их через десериализатор.

Вопрос, однако: где сериализуются данные?Если вы делаете это в .NET, а затем отправляете его клиенту, ему не нужно вносить какие-либо изменения при возврате на сервер, если что-то не изменено в свойстве __type.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...