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

时间:2011-11-10 08:50:28

标签: c# json windows-phone-7

我正在为Windows Phone 7构建一个Foursquare应用程序。它与HttpWebRequests很好地配合,我正在完美地接收JSON对象。我正在使用DataContractJsonSerializer(类型)方法。但是当把这个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对象数组,有两个memers:“public String type”和“public Object item”。我不知道数组中会有哪些,以及有多少通知(因此'item'成员必须是什么类型)。正如您在JSON中看到的,第一个通知有一个int类型的项,但第二个通知的item是string类型。但是我需要知道反序列化...或者它只是保持为null ..所以我不能把它转换为正确的类型..

有谁知道如何妥善解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

类似的东西:

var value =无论[number] .toString;

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

var valueInt = parseInt(value);

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