2

没有在这个主题上花费大量时间,我很好奇除了 xml 之外,让我现有的代码序列化为 json 的最直接方法可能是什么。现有代码使用 xmlwriter 为特定目的执行一些复杂的序列化,所以最终我希望能够传递一个 jsonserializer 来代替 xml 并让它生成 json 而不是 xml。

是否有任何 json 库处理这样的事情?

4

2 回答 2

0

不,没有直接的替代品。现有 JSON 序列化程序的 API 有很大不同。他们需要将整个模型保存在内存中,并一步将其序列化。例如,对于JSON.NET,您将使用:

string json = JsonConvert.SerializeObject(product);

实现您正在寻找的正确方法是抽象接口后面对象的实际序列化:

public interface IMySerializer
{
    void Serialize(MyObject instance, Stream stream);
}

现在您可以有此接口的多个实现,例如MySerializerXml, MySerializerJson, MySerializerCsv, ...

现在依赖于序列化的代码可以简单地使用IMySerializer. 因此,当您需要处理新格式时,您所要做的就是插入此接口的实现。

于 2013-01-14T06:33:03.117 回答
0

没有直接替代XmlWriter. 如果您想同时支持 XML 和 JSON,我建议通过数据合同进行序列化,即使用数据对象上的属性来指示所需的序列化格式。查看适用于 JSON的DataContractJsonSerializer和适用于 XML 的DataCONtractSerializer

您的模型对象看起来像这样:

[DataContract(Name = "Customer", Namespace = "http://www.contoso.com")]
class Person
{
    [DataMember()]
    public string FirstName;
    [DataMember]
    public string LastName;
    [DataMember()]
    public int ID;
}
于 2013-01-14T06:34:27.100 回答