【问题标题】:XPath for Json StringJson 字符串的 XPath
【发布时间】:2013-12-05 06:17:53
【问题描述】:

我有如下 JSON 字符串:

{
    "ConfigurationJsonResult":
    [
        2246,
        2247,
        2248,
        2249,
        2250,
        2251,
        2252,
        2253,
        2254,
        2255
    ]
}

我的问题是我想使用 xPath 获得第一个值,即 2246。

我试过使用 /ConfigurationJsonResult[1] 但它给了我 [2246,2247.....2255],我只想要 2246。如何实现它。

【问题讨论】:

  • 是否可以使用 XPath 导航 JSON 字符串??
  • 是的,在这里阅读goessner.net/articles/JsonPath
  • 根据链接叫JSONPath,不是XPath
  • 但是您可以使用 XPath 读取 json 值.....
  • @Popeye 您发布的链接描述了一个使用 jsonpath 解析 json 数据的库,它类似于 xpath 但不是 xpath 本身。使用标准的 js 函数是无法做到的。但是,您可以将 xpath 转换为 jsonpath 并使用简单的函数来完成。

标签: json xml-parsing jsonpath


【解决方案1】:

您可以编写一个映射函数将xpath转换为jsonpath,并使用转换后的字符串来访问数据。

function xpathToJsonPath(xpath) {
   var jsonPath = xpath.replace("//","..");
   //Simillarly other mappings
   return jsonPath;
}

var data = jsonPath(object, xpathToJsonPath("$..author"));

映射提供了您共享的链接 - http://goessner.net/articles/JsonPath/

您可以对此进行大量改进,例如将其作为函数扩展到原型等。

【讨论】:

  • 在某些方面,这样的翻译实际上是个好主意。也可以获取一个 json 文件 json.reads() 它,然后将其打印为 xml 以使用 libxml2 支持。恕我直言,对于给定的用例,开销太大了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
  • 1970-01-01
  • 2019-04-03
相关资源
最近更新 更多