ASP.NET AJAX десериализация - PullRequest
       11

ASP.NET AJAX десериализация

0 голосов
/ 10 декабря 2010

Почему-то в ASP.NET AJAX, когда я делаю это:

Sys.Serialization.JavaScriptSerializer.serialize({attachToValidators:true});

Это результат:

"{"attachToValidators":true}"

Я пытаюсь сторнировать результат:

Sys.Serialization.JavaScriptSerializer.deserialize("{\"attachToValidators\":true}");

или:

Sys.Serialization.JavaScriptSerializer.deserialize("{attachToValidators:true}");

Я получаю такой результат:

Sys.ArgumentException: Невозможно десериализовать.Данные не соответствуют действительному JSON.Имя параметра: data

Почему это так?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 04 января 2011

Ответ опубликован здесь, хотя в 3.5 он работал отлично для меня, мне не нужен JSON.parse, поэтому я не знаю, что именно произошло: http://forums.asp.net/t/1631638.aspx

0 голосов
/ 10 декабря 2010

Что вы пытаетесь десериализовать от до ? Вот как работает JavaScriptSerializer для десериализации:

public class ValidatorInfo
{
  public bool attachToValidators { get; set; }
}

public void yourFunction()
{
  var js = new JavaScriptSerializer();

  ValidatorInfo info = js.Deserialize<ValidatorInfo>("{\"attachToValidators\":true}");

  // True.
  info.attachToValidators == true;
}

В вашем вопросе вы сериализуете анонимный тип, поэтому вам не хватает базового типа для сериализации. Это не сработает на обратном пути.

Если вам нужно более динамичное поведение, Json.Net предоставляет нечто подобное в своей реализации LINQ.

...