如何用数组反序列化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类型的。但是我需要知道为了反序列化…否则它就是空的。所以我不能把它转换成正确的类型。
有人知道如何解决这个问题吗?
嗯,不是100%肯定这将回答你的问题,但你可以不使用javascript来转换任何对象是一个字符串,然后操作它的方式?
类似:
var value = whatever[number].toString;
这将给你一个你可以使用的字符串。然后,您可以尝试将其解析回整型。
var value = parseInt(value);
然后使用IF语句查看valueInt是否存在,以确定第一个对象的值类型