【问题标题】:ServiceStack.Text.JsonSerializer.DeserializeFromString<T>() fails to deserialize if string contains \n's如果字符串包含 \n,ServiceStack.Text.JsonSerializer.DeserializeFromString<T>() 无法反序列化
【发布时间】:2023-12-31 23:44:01
【问题描述】:

正在尝试:T obj = JsonSerializer.DeserializeFromString&lt;T&gt;(jsonData);

在一个包含多个\n 的字符串上。 JayRock 的库成功反序列化如下:T obj = (T)JsonConvert.Import(typeof(T), jsonData);

这是一个错误,还是我需要手动删除换行符?

【问题讨论】:

  • 实际上是文本\n 还是换行符/ascii 字符 0A?
  • 我认为 #206 已经修复了 2 个月。不是这样吗?
  • 你是从 github 上拉的最新版本,还是只是发布版本?
  • spender,如果我将鼠标悬停在 jsonData 变量上,在预览弹出窗口中它会显示为 \n,但是如果我在“文本可视化器”中查看它,它会呈现每一个新行。不确定这是否回答了您的问题,关于 ascii 与文本...

标签: c# .net json deserialization servicestack


【解决方案1】:

我遇到的问题不是 \n,而是我的 DTO 上缺少公共属性。

回复:Can ServiceStack.Text deserialize JSON to a custom generic type?

【讨论】:

    【解决方案2】:

    调试器预览弹出窗口将实际换行符显示为 \n,以便预览保持单行。文本可视化器正确显示换行符。

    这对我来说意味着 JSON 本身已损坏,因为换行符应该使用\n 编码。

    字符串中的换行符在 Javascript 中是非法的,因此在 JSON 中也是如此。

    如果问题没有发生这种情况:nuget 版本已于 10 月 1 日发布,但 10 月 3 日在 github 中有一个提交,并附有评论“希望一劳永逸地修复空白问题” .值得尝试。

    【讨论】:

      最近更新 更多