字符串中的方括号时 JSONPath 出错

JSONPath getting Error when square brackets inside of string

k最新版本的库 https://github.com/JSONPath-Plus/JSONPath 有问题。

示例:

{
    "firstName": "John",
    "lastName": "doe",
    "age": 26,
    "address": {
        "streetAddress": "naist street",
        "city": "Nara",
        "postalCode": "630-0192"
    },
    "phoneNumbers [1]": [
        {
            "type": "iPhone",
            "number": "0123-4567-8888"
        },
        {
            "type": "home",
            "number": "0123-4567-8910"
        }
    ]
}

现在我想通过

获得“phoneNumbers [1]”

path: $..['phoneNumbers [1]']

这是一个用于测试的演示页面:https://jsonpath-plus.github.io/JSONPath/demo/

由于字符串中的方括号,该方法不起作用。 有谁知道如何解决这个问题。

我有很多 Json 包含带方括号的字符串的对象,所以如果有解决方案不仅针对特定情况。

有没有转义字符的选项来解决问题? 上面的 json 对象只是描述问题的示例代码。

仅使用 JSONPath 时也会出现此问题,因此它不限于该库。

https://jsonpath.com/

这似乎是 JSONPath-Plus 中的错误。 jsonpath library 可以应付。

const data = JSON.parse(`{
    "firstName": "John",
    "lastName": "doe",
    "age": 26,
    "address": {
        "streetAddress": "naist street",
        "city": "Nara",
        "postalCode": "630-0192"
    },
    "phoneNumbers [1]": [
        {
            "type": "iPhone",
            "number": "0123-4567-8888"
        },
        {
            "type": "home",
            "number": "0123-4567-8910"
        }
    ]
}`);
const result = jsonpath.query(data, "$..['phoneNumbers [1]']");
console.log(result);
<script src="https://unpkg.com/jsonpath@1.1.1/jsonpath.js"></script>

除此之外,您无能为力:

  • 改变你的数据结构
  • 正在更改您的图书馆
  • 提交错误报告

有一个解决方法只能用于 jsonpath-plus

$[?(@property == "phoneNumbers [1]")]