JavaScriptSerializer没有正确地序列化DynamicJsonObject

时间:2013-02-18 16:23:27

标签: c# json

我有一个类似于:

的DynamicJsonObject
var obj = new DynamicJsonObject();
obj.Field1 = "field1";
obj.Field2 = "field2";

我需要obj的json字符串。我尝试使用JavaScriptSerializer

var json = JavaScriptSerializer.Serialize(obj);

但结果总是json == '{}'

有解决方法吗?最好不要使用第三方库

2 个答案:

答案 0 :(得分:2)

感谢您的回答,但我找到了一种使用System.Web.Helpers.Json执行此操作的简单方法。 所以,我的代码看起来像这样:

string json = Json.Encode(obj);

我不能使用匿名对象,因为我没有创建obj,它已经以DynamicJsonObject'格式'提供。

答案 1 :(得分:1)

您可以将自定义转换器添加到JavaScriptSerializer。在System.Web.Helpers中,一个已经存在但是在内部 - 您可以使用以下代码进行注册:

var type = Type.GetType("System.Web.Helpers.DynamicJavaScriptConverter, System.Web.Helpers");
var converter = (JavaScriptConverter)Activator.CreateInstance(type);
JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.RegisterConverters(new[] { converter });

var json = serializer.Serialize(obj);

或从here

复制代码