加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 将JSON对象反序列化为列表不能使用asmx服务

发布时间:2020-12-16 00:41:47 所属栏目:asp.Net 来源:网络整理
导读:我有麻烦反序列化我的JSON字符串。我有一个类型的人类,具有公共属性,序列号为int,名字和姓氏。我想以JSON格式传递这些对象的数组,并将它们反序列化为一个列表,所以我可以在服务器上循环遍历它们,但是ASP.NET表示不支持将它们反序列化为数组。我已经验
我有麻烦反序列化我的JSON字符串。我有一个类型的人类,具有公共属性,序列号为int,名字和姓氏。我想以JSON格式传递这些对象的数组,并将它们反序列化为一个列表,所以我可以在服务器上循环遍历它们,但是ASP.NET表示不支持将它们反序列化为数组。我已经验证了我生产的JSON,它是有效的。 ASP.NET在反序列化之前需要具备哪些特殊的JSON?有趣的是如果我序列化一个列表< person>反对JSON它看起来完全像我生产的JSON。我一定是缺少一些东西…要澄清,我正在使用ASP.NET Ajax库来反序列化。这是我从网络服务中得到的:

{“Message”:”Type u0027System.Collections.Generic.IDictionary`2[[System.String,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089],[System.Object,PublicKeyToken=b77a5c561934e089]]u0027 is not supported for deserialization of an array.”

实际上不幸的是,这似乎与反序列化无关,看来你不能将一组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。类型人物的列表是类似的,接受使用一组人,而不仅仅是一个对象。我希望这有助于某人。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读