我现在使用.NET JavascriptSerializer类将我的对象序列化为JSON表示并在客户端使用它。只要我坚持使用int,string等默认类型,一切都很好。但是,现在我想在我的对象上序列化自定义类型属性。让我们看一下我班的一个例子:
public class ClientData
{
public Guid Id { get; set; }
public string Description { get; set; }
public MyCustomObject ObjectX { get; set; }
}
我想要的是一个客户端对象,看起来像这样:
{ Id: 0000-0000-000-0000, Description: "some description", ObjectX: "125.20" }
为了使这项工作,我尝试使用JavaScriptConverter,但似乎没有解决问题,因为它只能处理字典,结果将如下所示:
{ Id: 0000-0000-000-0000, Description: "some description", ObjectX: { Value: "125.20"} }
这不是我想要的。顺便说一句,我确实在MyCustomObject类上实现了toString。
有什么建议吗?
感谢分配。
答案 0 :(得分:0)
这是javascriptserializer的msdn页面: http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx
在评论部分中说:
要序列化对象,请使用Serialize方法。若要反序列化JSON字符串,请使用Deserialize或DeserializeObject方法。要序列化和反序列化JavaScriptSerializer本身不支持的类型,请使用JavaScriptConverter类实现自定义转换器。然后使用RegisterConverters方法注册转换器。
所以你应该看看这个课: http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptconverter.aspx
答案 1 :(得分:0)
使用Json.NET库中的JsonConverter似乎可以解决这个问题。
答案 2 :(得分:0)
您可以将自定义对象转换为字符串。您使用JavaScriptConverter将您的对象转换为也实现IDictionary的Uri实例,以允许它传递出JavaScriptConverter。
此处针对DateTime对象描述了此hack: http://blog.calyptus.eu/seb/2011/12/custom-datetime-json-serialization/