当webservice调用解析JSON对象时,在.net中究竟发生了什么?
What exactly happens in .net when a webservice call parses a JSON object?
假设我编写以下c#代码来定义一个web方法:
public class Thing
{
public string X {get;set}
public string Y {get;set}
}
[WebMethod]
public static void myFunction(Thing thing) { }
我发现我可以使用jQuery JavaScript调用函数,看起来像这样:
var myData = { X: "hello", Y: "world" };
var jsonData = JSON.stringify(myData);
jQuery.ajax({ data: jsonData, ...
当调用myFunction
时,thing.X
设置为"hello",thing.Y
设置为"world"。究竟是什么。net框架做设置thing
的值?它调用构造函数吗?
就像你可以创建这样的东西
Thing x = new Thing { X = "hello", Y = "world" }
所以它不会调用构造函数来回答你的问题。
好的,更多细节…
它接受JSON并对其进行反序列化。它填充JSON对象的属性。例如,如果在JSON中有以下内容:
{"notRelated":0, "test": "string"}
序列化器不会为thing找到X或Y,并将它们设置为该数据类型的默认值。
假设你想更深入。您可以自定义序列化和反序列化您的对象:
[Serializable]
public class MyObject : ISerializable
{
public int n1;
public int n2;
public String str;
public MyObject()
{
}
protected MyObject(SerializationInfo info, StreamingContext context)
{
n1 = info.GetInt32("i");
n2 = info.GetInt32("j");
str = info.GetString("k");
}
[SecurityPermissionAttribute(SecurityAction.Demand,SerializationFormatter=true)]
public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("i", n1);
info.AddValue("j", n2);
info.AddValue("k", str);
}
}
你可以看到,它正在寻找参数在你的例子中,X
和Y
相关文章:
- 借助asp.net验证或java脚本对多个文本进行验证
- java.net和javascript之间正则表达式的差异
- 将Javascript数组发送到控制器ASP.NET MVC
- ASP.NET通过单击JavaScript按钮触发c#事件
- 将数据从javascript文件导入VB.Net页面
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- 从javascript调用asp.net codebehind函数
- jQuery Error adadvisor.net
- 使用javascript的Asp.net内容占位符
- 获取ASP.NET Ajax Timer状态
- ASP.NET网络摄像头显示
- 如何在只能有一个asp.net表单的主页上从asp.net页面中的javascript中获取值
- 如何将乳胶配方奶粉图像保存到Asp.net中的文件夹中
- asp.net,包括iss上的javascript slow
- 选择不在GridView-ASP.NET中激发
- 如何添加CSS&JavaScript进入Windows窗体应用程序C#.net
- 什么'是在asp.net MVC中将本地化的resources.resx文件转换为javascript文件的有效
- 使用带有.net autopostback的ryanfait.com自定义表单元素
- VB NET JQUERY AJAX上出现错误500
- 当webservice调用解析JSON对象时,在.net中究竟发生了什么?