简体   繁体   English

ASP.NET AJAX反序列化

[英]ASP.NET AJAX Deserialization

For some reason, in ASP.NET AJAX, when I do this: 由于某种原因,在ASP.NET AJAX中,当我这样做时:

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

This is the result: 结果如下:

"{"attachToValidators":true}"

I try reversing the result: 我尝试反转结果:

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

or: 要么:

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

I get this result: 我得到这个结果:

Sys.ArgumentException: Cannot deserialize. Sys.ArgumentException:无法反序列化。 The data does not correspond to valid JSON. 数据与有效的JSON不对应。 Parameter name: data 参数名称:数据

Why is that? 这是为什么?

Thanks. 谢谢。

答案发布在这里,尽管在3.5版本中对我来说效果很好,我不需要JSON.parse,所以我不知道发生了什么: http : //forums.asp.net/t/1631638.aspx

What are you trying to deserialize it to ? 什么是你想将它反序列化? This is how JavaScriptSerializer works, for deserialization: 这是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;
}

In your question, you're serializing an anonymous type, so you get away with not having an underlying type to serialize. 在您的问题中,您正在序列化一个匿名类型,因此无需使用基础类型进行序列化就可以摆脱。 That doesn't work on the way back in though. 但是,这在返回的途中不起作用。

If you need more dynamic behavior, Json.Net provides something like that with its LINQ implementation. 如果您需要更多动态行为,Json.Net的LINQ实现提供了类似的功能。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM