【问题标题】:handle complex anonymous JSON object处理复杂的匿名 JSON 对象
【发布时间】:2020-04-23 10:20:09
【问题描述】:

我有复杂的匿名 JSON 字符串。

例如:

{ someData: { test1: { test2: { test4: "data" }, test3: "my text" } } }

我需要在这个 JSON 中找到一个属性。 因此,例如,如果 JSON 包含 someData.test1.test3 属性,那么我需要使用此属性的值 my text。 有没有一种简单的方法(处理任何级别的嵌套)?

【问题讨论】:

  • 这应该可以工作:myObject["someData"][test1]["test3"],假设 myObject 是 JObject 类型
  • 简单的方法(处理任何级别的嵌套),递归解决方案呢?
  • 是的,我认为这是个好主意,但不幸的是,我不擅长递归

标签: c# json .net-core json.net


【解决方案1】:

您可以使用 newtonsoft.json 将此 json 解析为 JToken 使用

JToken token = JToken.Parse("{ \"someData\": { \"test1\": { \"test2\": { \"test4\": \"data\" }, \"test3\": \"my text\" } } }");

然后使用 SelectToken 你可以评估一个路径并得到你想要的值。

JToken result = token.SelectToken("$.someData.test1.test3");

希望这会有所帮助!

在 DotNetFiddle 上查看:https://dotnetfiddle.net/7cyRzv

【讨论】:

  • 太棒了!非常感谢,但如果我需要不区分大小写的检查怎么办?
  • JsonPath 没有内置功能来执行不区分大小写的路径。您必须自己编写代码才能在路径上运行并进行不区分大小写的导航。之前有人问过这个问题:stackoverflow.com/questions/35704390/…@A.Gladkiy
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多