【问题标题】:JsonConvert Deserialization - How to get the value of some parts of json as string instead of deserializingJsonConvert 反序列化 - 如何将 json 的某些部分的值作为字符串而不是反序列化
【发布时间】:2020-04-29 21:21:10
【问题描述】:

我收到一个json如下:

{
  "soce":{
  "message":{"details":"No Details available now.","code":"123"},
  "number":"500"
  }
}

我正在使用 Newtonsoft JsonConvert。我不想将消息中的值序列化为 json 而是字符串。

我尝试更新 json 以将 message 的值包含在引号中,但这不起作用。

{
  "soce":{
  "message":"{"details":"No Details available now.","code":"123"}",
  "number":"500"
  }
}

有没有办法指示反序列化器不反序列化 json 的一部分?

【问题讨论】:

  • 您的最后一个示例不起作用,因为它不是合法的 json。您需要对字符串中的双引号进行转义,以免将它们作为字符串结尾处理。
  • 为什么要将它作为字符串?是因为您不想承担反序列化这部分的开销,还是只想拥有该级别的原始 json?
  • 如果你只想得到message中任何内容的a json表示,你可以为该属性声明一个JToken类型的属性并反序列化到它,然后在上面使用.ToString() 来获取json。但是,它不一定会匹配原始 json 输入中的空格。
  • 是的 Lasse,我需要原始 json 内容,而无需仅对消息中的内容进行反序列化

标签: json.net jsonconvert


【解决方案1】:

按照 Lasse karlsen 的建议,我声明了 JToken 类型的属性,并使用 ToString() 将值作为 json 字符串获取。

公共 JToken 消息 { 获取;放; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-22
    • 2012-08-15
    • 2016-12-22
    • 1970-01-01
    • 2023-03-28
    • 2023-03-23
    • 2020-06-02
    • 1970-01-01
    相关资源
    最近更新 更多