【问题标题】:how to serialize a long string and maintain the formatting?如何序列化长字符串并保持格式?
【发布时间】:2015-03-10 12:12:00
【问题描述】:

我有一个控制台应用程序,并通过 POST 方法将字符串内容(您可以说很长的评论)写入 LiquidPlanner 评论。我有一个包含一些 html 标签的长字符串,并保持如下格式。

当我通过 JsonConvert.SerializeObject 进行序列化时,该注释的格式会中断,并在另一端写入如下混乱的文本。

我尝试了以下链接,但没有帮助。 Link for serialization

如何序列化完全相同?有什么办法请尽快告诉我,谢谢。

【问题讨论】:

  • 在发送之前对您的字符串进行 URL 编码或 base-64 编码?
  • 不,实际上根据api用户名和密码必须在发送请求之前进行base-64编码,所以在我的POST函数中,我的用户名:密码只有base64编码,而不是注释字符串。跨度>
  • 你从哪里得到数据?什么是行终止字符? \r\n\n\r?
  • 您是否检查了调用JsonConvert.SerializeObject(inputString) 的输出?应该没有问题。我认为它宁愿显示在 LiquidPlanner 端(不知道这个工具)。可能对于 LiquidPlanner,您应该替换一些换行符。
  • 在调试过程中,我看到序列化数据有\r\n,\n。,我尝试在LiquidPlanner 上手动发布cmets,时间格式没有中断。它的意思是liquidPlanner 支持格式化。但是从我正在序列化对象的工具中,正在破坏 POST 函数中的格式。

标签: c# json serialization json.net http-post


【解决方案1】:

错误原因: 我解决了这个问题,实际上在原始字符串中发生了什么你可以看到新行,所以当这个字符串传递到字符串变量时,.Net 环境将 \r\n 放在每个新行上,当我从 newton.json 库中序列化它时在 \r 和 \n (\\r\\n) 中再添加一个斜杠,因此当我在 LiquidPlanner 中发布字符串时,LiquidPlanner 无法解释 (\\r\\n) 并以非格式化方式写入文本。

错误解决方法: 我做了什么,我使用正则表达式并将 \\r\\n 替换为序列化字符串中的
标记并发布,它对我有用。

string.Join("<br/>", System.Text.RegularExpressions.Regex.Split(createCommentJson, @"(?:\\r\\n|\\n|\\r)"));

它以格式化的方式发布。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-17
    • 2016-02-24
    • 2011-08-06
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 2012-07-02
    • 2018-12-31
    相关资源
    最近更新 更多