1

我现在使用 .NET JavascriptSerializer 类将我的对象序列化为 JSON 表示形式并在客户端使用它。只要我坚持使用 int、string 等默认类型,一切都很好。但是,现在我想在我的对象上序列化一个自定义类型属性。让我们看一个我的课的例子:

public class ClientData 
{      
    public Guid Id { get; set; }
    public string Description { get; set; }
    public MyCustomObject ObjectX { get; set; }
}

我想要的 Wat 是一个看起来像这样的客户端对象:

{ 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。

有什么建议么?

谢谢分配。

4

3 回答 3

0

您可以将自定义对象转换为字符串。您使用 JavaScriptConverter 将您的对象转换为 Uri 实例,该实例还实现 IDictionary 以允许它从 JavaScriptConverter 传递出去。

此处针对 DateTime 对象描述了此 hack:http: //blog.calyptus.eu/seb/2011/12/custom-datetime-json-serialization/

于 2011-12-28T10:15:07.177 回答
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

于 2011-03-30T12:35:52.920 回答
0

使用 Json.NET 库中的 JsonConverter 似乎对我有用。

于 2011-03-30T14:49:26.477 回答