我有:
dynamic dObj = System.Web.Helpers.Json.Decode(contentsOfJsonFile) // returns dynamic..
其中:
dObj.title // is a flat sting
dObj.description // is a flat sting
dObj.tags // is an array! ["videos", "pictures", "other assets"]
现在在动态变量中,如何修改嵌入式数组?
当我访问dObj.tags [0]时,它返回字符串值。但是当我这样做时:
Json.Encode(dObj) // array unplugged, object empty
它丢失了嵌入式阵列的空白。即使我不修改任何东西,它仍然会丢失嵌入式阵列。我试图将它转换为泛型:
List<string> list = (List<string>)dObj.tags;
但它引发了一个例外:
“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”的类型的第一次机会异常
问题:
如何修改动态对象的成员数组,以便在调用Json.Encode(dObj)
时保持更改?
答案 0 :(得分:2)
解码后执行此调整:
dObj.tags = new List<dynamic>( dObj.tags );
尽管有这种打嗝,但System.Web.Helpers.Json
的动态对象的序列化和反序列化比JSON.NET
快一点。