在C#中使用JavascriptSerializer解析未知的JSON

时间:2012-01-31 05:10:13

标签: c# json javascriptserializer

如何使用JavaScriptSerializer解析一些未知的动态JSON。特别是,我正在为Google Calendar API编写自己的包装器。事件有一个名为extendedProperties的对象,其中包含一个私有对象和一个包含一组未知属性的共享对象:

"extendedProperties": {
    "private": {
        "UnknownKey1": "UnknownValue1",
        "UnknownKey2": "UnknownValue2",
        "UnknownKey3": "UnknownValue3"
    },
    "shared": {
        "UnknownKey1": "UnknownValue1",
        "UnknownKey2": "UnknownValue2",
        "UnknownKey3": "UnknownValue3"
    }
}

我想为JavaScriptSerializer创建一个这样的类:

public class ExtendedProperties
{
    public ??? @private { get; set; }
    public ??? shared { get; set; }
}

当然有问题。

(1)序列化程序是否理解&符号以便解析属性'private'?

(2)JavaScriptSerializer可以读/写的属性的返回类型是什么?某种字典?

提前致谢!

2 个答案:

答案 0 :(得分:3)

var serializer = new JavaScriptSerializer();
var jsonObject = serializer.Deserialize<IDictionary<string, object>>(jsonStr);

我已使用此代码反序列化未知的json对象。

答案 1 :(得分:0)

解析器理解@符号。如果您正在使用.net 4,则可以使用dynamic作为类型。您可以尝试Dictionary<string,string>尽管我始终遇到将字典序列化和反序列化为同一参考对象的问题。 List<KeyValuePair<string, string>>通常可以解决问题。