没有花费大量时间在这个主题上,我很好奇除了xml之外,允许我现有代码序列化为json的最简单方法。现有代码使用xmlwriter为特定目的执行一些复杂的序列化,所以最终我希望能够传递一个jsonserializer来代替xml,并让它生成json而不是xml。
是否有任何json库处理这样的事情?
答案 0 :(得分:0)
不,没有直接的替代品。现有JSON序列化程序的API有很大不同。他们需要将整个模型放在内存中并一步完成序列化。例如,使用JSON.NET,您将使用:
string json = JsonConvert.SerializeObject(product);
实现所需内容的正确方法是抽象接口后面对象的实际序列化:
public interface IMySerializer
{
void Serialize(MyObject instance, Stream stream);
}
现在您可以有多个此接口的实现,例如MySerializerXml
,MySerializerJson
,MySerializerCsv
,...
现在,依赖于序列化的代码只能使用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;
}