如何用数组反序列化JSON对象,而不知道该数组中对象的类型

本文关键字:对象 数组 类型 不知道 何用 反序列化 JSON | 更新日期: 2023-09-27 18:14:18

我正在为Windows Phone 7构建一个Foursquare应用程序。它与HttpWebRequests很好地工作,我正在完美地接收JSON对象。我使用DataContractJsonSerializer(type)方法。但是当将这个JSON反序列化为我想要的对象时,一切都很顺利,直到我有一个对象数组,我不知道该期待哪种对象类型(也不知道数量&对象的顺序)。但是我确实需要在DataContractJsonSerializer(type)方法中反序列化时定义这个类型。

让我给你看一个JSON的快照,它会导致这个问题:

notifications":
[{
    "type":"notificationTray",
    "item":{
        "unreadCount":0
    }
},{
    "type":"message",
    "item":{
        "message":"OK! We've got you @ Strandslag 4. You've been here 2 times."
    }
}]

所以我把它反序列化为一个通知对象数组,有两个成员:"公共字符串类型"answers"公共对象项"。我不知道数组中会有哪些通知,以及有多少通知(因此'item'成员必须是什么类型)。正如您在JSON中看到的那样,第一个通知的项是int类型的,而第二个通知的项是string类型的。但是我需要知道为了反序列化…否则它就是空的。所以我不能把它转换成正确的类型。

有人知道如何解决这个问题吗?

如何用数组反序列化JSON对象,而不知道该数组中对象的类型

嗯,不是100%肯定这将回答你的问题,但你可以不使用javascript来转换任何对象是一个字符串,然后操作它的方式?

类似:

var value = whatever[number].toString;

这将给你一个你可以使用的字符串。然后,您可以尝试将其解析回整型。

var value = parseInt(value);

然后使用IF语句查看valueInt是否存在,以确定第一个对象的值类型