Q:

How to modify and presist member / embedded array in "dynamic" object (the one declared with dynamic keyword)

I have:
dynamic dObj = System.Web.Helpers.Json.Decode(contentsOfJsonFile) // returns dynamic..

where:
dObj.title // is a flat sting
dObj.description // is a flat sting
dObj.tags // is an array! ["videos", "pictures", "other assets"]

Now in dynamic variable, how to modify the embedded array? 
When I access dObj.tags[0] it returns string value. But when I do:
Json.Encode(dObj) // array unplugged, object empty

It loses the empties the embedded array. Even if I don't modify anything, it still loses the embedded array. I tried to cast it to generics:
List<string> list = (List<string>)dObj.tags;

But it throws an exception:

A first chance exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException'`

Question:
How to modify member array of dynamic object, such that it persist the changes when Json.Encode(dObj) is called?

A:

Execute this adjustment after decoding:
dObj.tags = new List<dynamic>( dObj.tags );

Despite of this hiccup, the serialization and deserialization of dynamic object with System.Web.Helpers.Json is bit faster than JSON.NET.

