JSON编写器 - 替换xmlwriter?

时间:2013-01-14 06:30:17

标签: c# xml xml-serialization json

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

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

2 个答案:

答案 0 :(得分:0)

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

string json = JsonConvert.SerializeObject(product);

实现所需内容的正确方法是抽象接口后面对象的实际序列化:

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

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

现在,依赖于序列化的代码只能使用IMySerializer。因此,当您需要处理新格式时,您只需要 drop-in 此接口的实现。

答案 1 :(得分:0)

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

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

[DataContract(Name = "Customer", Namespace = "http://www.contoso.com")]
class Person
{
    [DataMember()]
    public string FirstName;
    [DataMember]
    public string LastName;
    [DataMember()]
    public int ID;
}