C# 如何在“中修改和预先列出成员/嵌入数组”;“动态”;对象(使用dynamic关键字声明的对象)
我有: 其中:C# 如何在“中修改和预先列出成员/嵌入数组”;“动态”;对象(使用dynamic关键字声明的对象),c#,arrays,json,generics,dynamic,C#,Arrays,Json,Generics,Dynamic,我有: 其中: dynamic dObj = System.Web.Helpers.Json.Decode(contentsOfJsonFile) // returns dynamic.. 现在在动态变量中,如何修改嵌入的数组 当我访问dObj.tags[0]时,它返回字符串值。但当我这样做的时候: dObj.title // is a flat sting dObj.description // is a flat sting dObj.tags // is an array! ["vide
dynamic dObj = System.Web.Helpers.Json.Decode(contentsOfJsonFile) // returns dynamic..
现在在动态变量中,如何修改嵌入的数组
当我访问dObj.tags[0]时,它返回字符串值。但当我这样做的时候:
dObj.title // is a flat sting
dObj.description // is a flat sting
dObj.tags // is an array! ["videos", "pictures", "other assets"]
它会丢失数据并清空嵌入的数组。即使我不修改任何东西,它仍然会丢失嵌入的数组。我试图将其转换为泛型:
Json.Encode(dObj) // array unplugged, object empty
List List=(List)dObj.tags;
但它抛出了一个例外:
“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”类型的首次意外异常`
问题:
如何修改动态对象的成员数组,使其在调用
Json.Encode(dObj)
时保持更改?解码后执行此调整:
List<string> list = (List<string>)dObj.tags;
dObj.tags=新列表(dObj.tags);
尽管存在这个问题,但是使用System.Web.Helpers.Json
对动态对象进行序列化和反序列化要比Json.NET
快一点
dObj.tags = new List<dynamic>( dObj.tags );