C# 如何将JSON子对象作为字符串读取

C# 如何将JSON子对象作为字符串读取,c#,json,json.net,jsonconvert,C#,Json,Json.net,Jsonconvert,例如: { "Header": { "Test": "Value" } } 我希望以字符串的形式检索头的值,而不是作为对象 表示标头的值,{“Test”:“value”}作为字符串检索 这是一个非常大的响应的一部分,上面的示例仅为说明目的而简化。手动解析在将来很难维护。您可以尝试使用JsonPath,如示例所示 它说: JObject o = JObject.Parse(@"{ "Header": { "Test": "Value" } }"); 然后使用JToken进行查询 JTo

例如:

{ "Header": { "Test": "Value" } }
我希望以
字符串
的形式检索头的值,而不是作为对象

表示标头的值,
{“Test”:“value”}
作为字符串检索


这是一个非常大的响应的一部分,上面的示例仅为说明目的而简化。手动解析在将来很难维护。

您可以尝试使用JsonPath,如示例所示

它说:

JObject o = JObject.Parse(@"{
    "Header": { "Test": "Value" }
}");
然后使用JToken进行查询

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

当我这样做时,JToken实际上是格式化的,这意味着输出被缩进并排列成多行,而不再是原始字符串。问题是JSON反序列化程序并不能解决您的问题。JSON是一种基于结构化文本的文件格式,但字符串外的空格应该无关紧要。如果您需要获得子属性的确切原始JSON,则基本上需要自己编写反序列化程序。这就是我所相信的。在那个级别反序列化的字符串是否是一个选项?这不是一个选项。因为该值是数字签名的。我需要恢复原状,那你就有麻烦了。您可能需要手动执行“反序列化”。JSON(反)序列化程序不关心空格,他们不应该这样做。您确定他们没有将签名定义为某种规范形式,例如“序列化时不使用换行符或缩进,但在对象中放置空格,在冒号和逗号之后”?Lasse V.Karisen,是的,对象序列化为一行,没有任何CR和LF。