我正在使用SimpleJson库:http://simplejson.codeplex.com/
我想将JSON字符串反序列化为动态对象,如下所示:
dynamic json = SimpleJson.SimpleJson.DeserializeObject("{\"foo\":\"bar\"}");
var test = json.foo;
反序列化部分正常工作,但调用json.foo会抛出一个带有错误消息'SimpleJson.JsonObject' does not contain a definition for 'foo'
的RuntimeBinderException。
如何使用SimpleJson反序列化JSON字符串并使用json.foo语法访问动态属性?
答案 0 :(得分:10)
嗯,这只是阅读SimpleJson源代码的问题。 :-)需要取消注释一行以支持我正在寻找的动态语法。不确定为什么默认情况下不启用它。
来自源代码:
// NOTE: uncomment the following line to enable dynamic support.
//#define SIMPLE_JSON_DYNAMIC
答案 1 :(得分:3)
查看示例,JsonObject
属性就像字典一样被访问。因此,您需要json.foo
而不是json["foo"]
。
你在这里使用dynamic
实际上更糟糕,因为它没有任何动态:该方法返回JsonObject
,它只是没有foo
成员。如果您没有使用dynamic
,则可能在编译时收到了错误消息。
如果您查看链接L.B.提供,它显示了如何自己实现这个动态功能。
答案 2 :(得分:1)
> csc / t:library / d:SIMPLE_JSON_DYNAMIC SimpleJson.cs