【问题标题】:How to read JSON sub object as a string如何将 JSON 子对象读取为字符串
【发布时间】:2020-05-16 21:10:44
【问题描述】:

例子:

{ "Header": { "Test": "Value" } }

我想将 Header 的值作为 String 检索,而不是作为对象检索。

表示Header的值,{ "Test": "Value" }作为字符串检索。

这是一个非常大的响应的一部分,上面的示例仅用于说明目的进行了简化。以后手动解析会很难维护。

【问题讨论】:

  • 是否将在该级别反序列化的任何内容序列化回字符串?
  • 这不是一个选项。因为该值是数字签名的。我需要按原样检索。
  • 好吧,那你就有麻烦了。您可能需要进行手动“反序列化”。 JSON(反)序列化程序不关心空格,它们不应该。
  • 您确定他们没有将签名定义为某种规范形式,例如“不带换行符或缩进的序列化,但在冒号和逗号之后的对象内放置空格”?
  • Lasse V. Karisen,是的,对象在一行中被序列化,没有任何 CR 和 LF。

标签: c# json json.net jsonconvert


【解决方案1】:

您可以尝试使用 JsonPath,例如 Query Json select

上面写着:

JObject o = JObject.Parse(@"{
    "Header": { "Test": "Value" }
}");

然后用JToken查询

JToken header = o.SelectToken("$..Header");
Console.Writeline(header);

【讨论】:

  • 当我这样做时,JToken 实际上是格式化的,意味着输出被缩进并排列成多行,不再是原始字符串。
  • 问题在于 JSON 反序列化器并不是为了解决您遇到的问题。 JSON 是一种基于结构化文本的文件格式,但字符串外的空格无关紧要。如果您需要为子属性获取准确的 original JSON,则基本上需要自己编写反序列化器。是我所相信的。
猜你喜欢
  • 2020-07-25
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 2018-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多