繁体   English   中英

如何在不知道数组中对象类型的情况下使用数组反序列化JSON对象

[英]How to deserialize an JSON object with an array, without knowing the types of objects in that array

我正在为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."
    }
}]

因此,我将其反序列化为Notification对象的数组,并具有两种含义:“ public String type”和“ public Object item”。 我不知道在数组中将有哪些,多少个Notification(以及“ item”成员必须属于哪种类型)。 正如您在JSON中看到的那样,第一个通知的项目类型为int,而第二个通知的项目类型为string。 但是我需要知道反序列化...否则它将保持为null ..所以我无法将其转换为正确的类型。

有谁知道如何很好地解决这个问题?

嗯,不是100%肯定会回答您的问题,但是您不能使用javascript将任何对象转换为字符串然后以这种方式进行操作吗?

就像是:

var value = what [number] .toString;

这将为您提供一个可以使用的字符串。 然后,您可以尝试将其解析回int。

var valueInt = parseInt(value);

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

暂无
暂无

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

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