我有:

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快一些。

07-26 06:07