With this code:
```
var personJson = "{name:\"George\",aliases:[\"Peter\",\"David\"]}";
var person = Json.Decode(personJson);
person.name = "Michael";
personJson = Json.Encode(person);
```
Json.Encode is currently outputting:
```
"{\"name\":\"Michael\",\"aliases\":{}}"
```
When it should be:
```
"{\"name\":\"Michael\",\"aliases\":[\"Peter\",\"David\"]}"
```
The fix is in System.Web.Helpers/DynamicJavaScriptConverter.cs
```
// Get the value for each member in the dynamic object
foreach (string memberName in memberNames)
{
- values[memberName] = DynamicHelper.GetMemberValue(obj, memberName);
+ var value = DynamicHelper.GetMemberValue(obj, memberName);
+ if (value is DynamicJsonArray)
+ value = (object[])(DynamicJsonArray)value;
+ values[memberName] = value;
}
return values;
```
```
var personJson = "{name:\"George\",aliases:[\"Peter\",\"David\"]}";
var person = Json.Decode(personJson);
person.name = "Michael";
personJson = Json.Encode(person);
```
Json.Encode is currently outputting:
```
"{\"name\":\"Michael\",\"aliases\":{}}"
```
When it should be:
```
"{\"name\":\"Michael\",\"aliases\":[\"Peter\",\"David\"]}"
```
The fix is in System.Web.Helpers/DynamicJavaScriptConverter.cs
```
// Get the value for each member in the dynamic object
foreach (string memberName in memberNames)
{
- values[memberName] = DynamicHelper.GetMemberValue(obj, memberName);
+ var value = DynamicHelper.GetMemberValue(obj, memberName);
+ if (value is DynamicJsonArray)
+ value = (object[])(DynamicJsonArray)value;
+ values[memberName] = value;
}
return values;
```