【问题标题】:Want to Serialize in specific format想要以特定格式序列化
【发布时间】:2017-08-07 11:03:39
【问题描述】:

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

  1. 没有方括号[]在开始和结束时
  2. 没有逗号,应该换行。

    {"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........}

目前我正在使用

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

不知道。 google了一下,没找到解决办法。

【问题讨论】:

  • 由于您要序列化的格式不是标准 JSON,因此使用 JSON 序列化器可能是不明智的 - 您可能必须自己构建。
  • @darasd 我知道它不是有效的格式,但由于某种原因实际上是必需的。
  • 为什么不替换结果字符串中不需要的内容?
  • 您可能正在寻找自定义媒体类型格式化程序。

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


【解决方案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 在评论部分中提到的那样,如果这是您需要在整个地方一遍又一遍地做的事情,那么自定义媒体类型格式化程序是要走的路(事实上,为了遵守 Web API 实践,您应该使用自定义媒体格式化程序)。但是,此代码提供了它的逻辑,您只需要根据需要执行重构即可。

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    相关资源
    最近更新 更多