将JSON字符串转换为动态对象

时间:2014-01-18 23:05:26

标签: c# json object dynamic

我正在尝试从C#中的dynamic字符串创建一个JSON对象。但我无法完成它。

通常我会通过Web服务调用获取JSON字符串,但在这种情况下,我只是创建了一个简单的类,我将其转换为JSON字符串。然后我尝试将其转换为具有完全相同结构的动态对象,就好像它是Entity类的实例一样。但那就是我遇到麻烦的地方。

这是我变成JSON字符串的类:

public class Entity
{
    public String Name = "Wut";
    public String[] Scores = {"aaa", "bbb", "ccc"};
}

然后在我的代码的某处,我这样做:

var ent = new Entity();

// The Serialize returns this:
// "{\"Name\":\"Wut\",\"Scores\":[\"aaa\",\"bbb\",\"ccc\"]}"
var json = new JavaScriptSerializer().Serialize(ent);

dynamic dynamicObject1 = new JavaScriptSerializer().DeserializeObject(json);
dynamic dynamicObject2 = Json.Decode(json);

当我调试此代码时,我看到第一个dynamicObject1返回Dictionary。不是我真正想要的。

第二个dynamicObject2看起来更像Entity个对象。它有一个名为Name的属性,带有一个值。它还有一个名为Scores的动态数组,但出于某种原因,该列表结果为空......


Scores对象中空dynamic属性的屏幕截图:

Dynamic object


所以到目前为止我没有运气试图将JSON字符串转换为动态对象。任何人都知道如何完成这项工作?

1 个答案:

答案 0 :(得分:2)

使用Json.Net

dynamic dynamicObject1  = JsonConvert.DeserializeObject(json);
Console.WriteLine(dynamicObject1.Name);