想要以特定格式进行序列化

时间:2017-03-16 10:23:52

标签: c# asp.net-web-api json.net jsonserializer

我想以下列格式序列化列表对象。

  1. 开头和结尾没有方括号[]
  2. 没有commma,它应该是新行。

    {" document_id":37577," document_name":" Office Marketview ........} {" document_id":37578," document_name":" Office Marketview ........} {" document_id":37579," document_name":" Office Marketview ........} {" document_id":37580," document_name":" Office Marketview ........} {" document_id":37581," document_name":" Office Marketview ........}

  3. 目前我正在使用

    var jsoncontent = JsonConvert.SerializeObject(publicationClasses, Formatting.None);
    

    不知道。 我谷歌,但没有找到任何解决方案。

1 个答案:

答案 0 :(得分:1)

您可以单独序列化每个对象,然后执行简单的字符串连接:

string result = string.Join(
    Environment.NewLine,
    publicationClasses.Select(obj => JsonConvert.SerializeObject(obj, Formatting.None))
);

如果您愿意,请使用\n代替Environment.NewLine

然后您可以按this问题中所述返回结果:

return Content(result, "text/plain");

您可以根据需要使用您偏好的mimetype。请注意,这只是一个一步到位的解决方案,如 Amit Kumar Ghosh 的评论部分所述,如果这是你需要在整个地方做的事情,那么自定义媒体类型formatter是要走的路(事实上,为了遵守Web API实践,你应该使用自定义媒体格式化器)。但是,这段代码提供了它的逻辑,你只需要根据需要执行重构。