servicestack,Serialization,Customization,servicestack" /> servicestack,Serialization,Customization,servicestack" />

Serialization 修改ServiceStack';s JSON输出

Serialization 修改ServiceStack';s JSON输出,serialization,customization,servicestack,Serialization,Customization,servicestack,我必须使用ServiceStack构建REST服务;答复必须有特定的格式。JSON和XML都将得到支持。标准序列化程序不会以我需要的格式返回响应。 对于JSON,包装结果就足够了,例如,如果函数返回站点对象列表,JSON序列化程序会给我[{…},…],但我需要{“站点”:[{…},…]}。在这种情况下,请求的内容类型将是“Sites+json”。对于其他功能,“站点”将被其他功能取代。 我怎样才能做到这一点 编辑: XML必须是JSON的直接“翻译”,如 ... 而不是{“站点”:…}。 标准X

我必须使用ServiceStack构建REST服务;答复必须有特定的格式。JSON和XML都将得到支持。标准序列化程序不会以我需要的格式返回响应。 对于JSON,包装结果就足够了,例如,如果函数返回站点对象列表,JSON序列化程序会给我[{…},…],但我需要{“站点”:[{…},…]}。在这种情况下,请求的内容类型将是“Sites+json”。对于其他功能,“站点”将被其他功能取代。 我怎样才能做到这一点

编辑: XML必须是JSON的直接“翻译”,如 ... 而不是{“站点”:…}。 标准XML序列化的工作方式不同,它总是同时放入数据类型。
有人知道怎么做吗?我想我必须编写自己的XML序列化程序,并将所有XML类型(如Sites+XML,…)映射到它?

您是否尝试过围绕所需的json创建DTO,而不是尝试创建新格式?将您的业务模型转换为高度定制的DTO然后创建新格式要容易得多。谢谢,我想到了这一点。是否有必要对每个返回类型执行此操作,或者我是否可以使用常规类型并以某种方式调整键(“站点”等)?无论如何,我必须为XML编写一些自定义序列化代码。如果您知道生成的格式,请使用消息DTO,然后在返回之前将它们从内部对象映射到响应对象。如果你知道结果应该是什么样子的话,那就容易多了。