JSONPath-Plus / JSONPath

A fork of JSONPath from http://goessner.net/articles/JsonPath/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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
    );
  },