如何使用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可以读/写的属性的返回类型是什么?某种字典?
提前致谢!
答案 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>>
通常可以解决问题。