JSONPath-Plus / JSONPath

A fork of JSONPath from http://goessner.net/articles/JsonPath/
Other
958 stars 169 forks source link

Single equals in filter assigns value #210

Open v-mwalk opened 3 months ago

v-mwalk commented 3 months ago

Describe the bug

A filter erroneously using a single equals in a comparison filter modifies the filtering property in the target object.

Code sample or steps to reproduce

const originalJSON = {
        testing: [
          { test: "hello1", prop1: "bye1",  prop2: "day1" },
          { test: "hello2", prop1: "bye2",  prop2: "day2" },
          { test: "hello3", prop1: "bye3",  prop2: "day3" },
        ],
      };

const filteredJSON = JSONPath({path: '$.testing[?(@.test="hello2"].prop1',json: originalJSON, resultType" 'all'}); // Note single equals in filter

//
// originalJSON now contains;
//        testing: [
//          { test: "hello2", prop1: "bye1",  prop2: "day1" },
//          { test: "hello2", prop1: "bye2",  prop2: "day2" },
//          { test: "hello2", prop1: "bye3",  prop2: "day3" },
//        ],
//      };
//
//

Expected behavior

As the filter is errored, would expect an exception to be thrown, for handling by the caller.

Environment (IMPORTANT)

Desktop**

Additional context

Can also be repo'd at jsonpath.com evaluator