我有:
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)
时保留更改? 最佳答案
解码后执行以下调整:
dObj.tags = new List<dynamic>( dObj.tags );
尽管有这些麻烦,但使用
System.Web.Helpers.Json
的动态对象的序列化和反序列化要比JSON.NET
快一些。