asp.net – 将JSON对象反序列化为列表不能使用asmx服务
我有麻烦反序列化我的JSON字符串。我有一个类型的人类,具有公共属性,序列号为int,名字和姓氏。我想以JSON格式传递这些对象的数组,并将它们反序列化为一个列表,所以我可以在服务器上循环遍历它们,但是ASP.NET表示不支持将它们反序列化为数组。我已经验证了我生产的JSON,它是有效的。 ASP.NET在反序列化之前需要具备哪些特殊的JSON?有趣的是如果我序列化一个列表< person>反对JSON它看起来完全像我生产的JSON。我一定是缺少一些东西…要澄清,我正在使用ASP.NET Ajax库来反序列化。这是我从网络服务中得到的:
实际上不幸的是,这似乎与反序列化无关,看来你不能将一组JSON对象传递给asmx Web服务。我对么?如果不能这样做,可以将JSON对象的集合传递给Web服务,并使用ASP.NET和C#在服务器上进行处理? 更新: 好的,这是我的代码。这是人类: public class person { public person() { // // TODO: Add constructor logic here // } public int seq { get; set; } public string firstName { get; set; } public string lastName { get; set; } } 这里是我的JSON字符串: [{"seq":1,"firstName":"Chris","lastName":"Westbrook"},{"seq":2,"firstName":"sayyl","lastName":"westbrook"}] 这里是我正在使用的代码 [WebMethod] public void updatePeople(string json) { IList<person> people = new JavaScriptSerializer().Deserialize<IList<person>>(json); //do stuff... } 解决方法
我想到了。我没有将JSON包装在像ASP.NET Ajax要求的对象中。对于此问题的未来观众,所有JSON对象必须在发送到Web服务之前用主对象包装。最简单的方法是在JavaScript中创建对象,并使用像json2.js这样的对象进行字符串化。此外,如果使用asmx Web服务,对象必须具有__type属性才能正确序列化。一个例子可能是:
var person=new object; person.firstName="chris"; person.lastName="Westbrook"; person.seq=-1; var data=new object; data.p=person; JSON.stringify(data); 这将创建一个名为p的对象,该对象将包装一个person对象。然后可以将其链接到Web服务中的参数p。类型人物的列表是类似的,接受使用一组人,而不仅仅是一个对象。我希望这有助于某人。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何在Kendo UI菜单上的多个组之间插入分隔
- asp.net-mvc – System.Web.Optimization使函数参数名对于某
- ASP.NET MVC5使用Area区域
- asp.net – 在asp:Button中包装文本
- asp-classic – 用于新的Web应用程序的经典ASP与PHP
- asp.net-mvc – 比ASP.NET MVC中的隐藏表单字段更安全吗?
- asp.net 结合mysql存储过程进行分页代码
- asp.net – 将url参数添加到asp主题文件夹中的css文件中
- asp.net – 你预编译你的网站,为什么不为什么不呢?
- strings
- asp.net-mvc-4 – Resharper无法解析主页中的部分
- asp.net-mvc – 禁用某些字段的验证
- asp.net – 如何在Visual Studio 2008调试器中查
- asp.net-mvc – 如何在ASP.NET MVC应用程序中使用
- asp.net – 当完全执行OnResultExecuted和OnResu
- asp.net-mvc – 使用Automapper映射嵌套类
- asp.net – GridView中的DropDownList SelectedI
- asp.net-mvc – 如何在我的Asp.net Mvc中使用lin
- asp.net – 如果内容是静态的,那么对于带有“If-
- ASP.NET等价的服务器端包括