Quoted subscript can not work will with union/or subscripts.
nielinjie opened this issue · comments
Describe the bug
escape with quoted subscript can not work will with union/or subscripts.
Code sample or steps to reproduce
//PASS
test.only("some path with OR subscripts", () => {
const obj = { functions: { foo: { io: "foo" }, bar: { out: "bar" } } };
const jsonp = "$..[io,out]";
const paths = jp.paths(obj, jsonp);
expect(paths).toEqual([
["$", "functions", "foo", "io"],
["$", "functions", "bar", "out"],
]);
});
//PASS
test.only("some path with ESCAPE", () => {
const obj = { functions: { foo: { "io.nest": "foo" }, bar: { out: "bar" } } };
const jsonp = "$..['io.nest']";
const paths = jp.paths(obj, jsonp);
expect(paths).toEqual([
["$", "functions", "foo", "io.nest"],
]);
});
//FAILED
test.only("some path with ESCAPE and OR subscripts", () => {
const obj = { functions: { foo: { 'io.nest': "foo" }, bar: { out: "bar" } } };
const jsonp = "$..['io.nest',out]";
const paths = jp.paths(obj, jsonp);
expect(paths).toEqual([
["$", "functions", "foo", "io.nest"],
["$", "functions", "bar", "out"],
]);
});
Console error or logs
Expected behavior
All test case above should pass.
Expected result
Environment (IMPORTANT)
- JSONPath-Plus version: 6.0.1
Desktop**
- OS: Mac
- Node Version: 15.12.0
The project is not really being actively maintained, but you'd have a better chance I think if your code sample worked for this library. The API you are using in your sample does not match this project.
Sorry,I should mentioned that jp.paths
in codes is just a help function for this:
import { JSONPath } from "jsonpath-plus";
const jp = {
paths: (obj: any, path: string) => {
return JSONPath({ path, json: obj, resultType: "path" }).map(
JSONPath.toPathArray
);
},