Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在“中修改和预先列出成员/嵌入数组”;“动态”;对象(使用dynamic关键字声明的对象)_C#_Arrays_Json_Generics_Dynamic - Fatal编程技术网

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 );