-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Hi Stefan
I have now find the correct place for Jsonpath issues!
I have posted a mini demo here:
https://github.com/sailfishapps/ThrowawayDemos/blob/master/Kaputt/JsonDBDemo
This runs on Sailfish using Qt QML / Javascript
The json file has 3 entities / elements, landed, area and template. Landed is
the root, and template is a child of area.
The json file has 3 areas, each with 2 child templates.
If I apply the following query:
$.landed.area[?(@.id = 1)].template[*]
I expect to get only the templates that belong to the area with id 1. (i.e. 2
hits)
Instead I get all templates of all areas. (i.e. 6 hits)
I am running jsonpath 0.8.5
As a first step to understanding what your code is doing, I have added some
console.log calls to the trace function.
The output shows that template is being processed 3 times (once for each area).
I expect it to be processed only once due to the predicate on area.
Grüsse
Chris
christopher.lamb@ch.ibm.com
//start json file
{
"landed":{
"area":[
{
"id":1,
"name":"South Africa",
"template":[
{
"id":1,
"name":"DefaultOKMsg"
},
{
"id":2,
"name":"DefaultNotOKMsg"
}
]
},
{
"id":3,
"name":"Schweiz",
"template":[
{
"id":1,
"name":"DefaultOKMsg"
},
{
"id":2,
"name":"DefaultNotOKMsg"
}
]
},
{
"id":4,
"name":"Italia",
"template":[
{
"id":1,
"name":"DefaultOKMsg"
},
{
"id":2,
"name":"DefaultNotOKMsg"
}
]
}
]
}
}
//end json file
//start console. log output
[D] getTemplates:50 - getting Templates for area: undefined
[D] parseJSONString:12 - about to pass DB to JSONPath
[D] P.trace:33 - trace: expr:landed;area;?(@.id = 1);template;*
[D] P.trace:34 - trace: val:[object Object]
[D] P.trace:35 - trace: path:$
[D] P.trace:33 - trace: expr:area;?(@.id = 1);template;*
[D] P.trace:34 - trace: val:[object Object]
[D] P.trace:35 - trace: path:$;landed
[D] P.trace:33 - trace: expr:?(@.id = 1);template;*
[D] P.trace:34 - trace: val:[object Object],[object Object],[object Object]
[D] P.trace:35 - trace: path:$;landed;area
[D] P.trace:33 - trace: expr:0;template;*
[D] P.trace:34 - trace: val:[object Object],[object Object],[object Object]
[D] P.trace:35 - trace: path:$;landed;area
[D] P.trace:33 - trace: expr:template;*
[D] P.trace:34 - trace: val:[object Object]
[D] P.trace:35 - trace: path:$;landed;area;0
[D] P.trace:33 - trace: expr:*
[D] P.trace:34 - trace: val:[object Object],[object Object]
[D] P.trace:35 - trace: path:$;landed;area;0;template
[D] P.trace:33 - trace: expr:0;
[D] P.trace:34 - trace: val:[object Object],[object Object]
[D] P.trace:35 - trace: path:$;landed;area;0;template
[D] P.trace:33 - trace: expr:
[D] P.trace:34 - trace: val:[object Object]
[D] P.trace:35 - trace: path:$;landed;area;0;template;0
[D] P.trace:33 - trace: expr:1;
[D] P.trace:34 - trace: val:[object Object],[object Object]
[D] P.trace:35 - trace: path:$;landed;area;0;template
[D] P.trace:33 - trace: expr:
[D] P.trace:34 - trace: val:[object Object]
[D] P.trace:35 - trace: path:$;landed;area;0;template;1
[D] P.trace:33 - trace: expr:1;template;*
[D] P.trace:34 - trace: val:[object Object],[object Object],[object Object]
[D] P.trace:35 - trace: path:$;landed;area
[D] P.trace:33 - trace: expr:template;*
[D] P.trace:34 - trace: val:[object Object]
[D] P.trace:35 - trace: path:$;landed;area;1
[D] P.trace:33 - trace: expr:*
[D] P.trace:34 - trace: val:[object Object],[object Object]
[D] P.trace:35 - trace: path:$;landed;area;1;template
[D] P.trace:33 - trace: expr:0;
[D] P.trace:34 - trace: val:[object Object],[object Object]
[D] P.trace:35 - trace: path:$;landed;area;1;template
[D] P.trace:33 - trace: expr:
[D] P.trace:34 - trace: val:[object Object]
[D] P.trace:35 - trace: path:$;landed;area;1;template;0
[D] P.trace:33 - trace: expr:1;
[D] P.trace:34 - trace: val:[object Object],[object Object]
[D] P.trace:35 - trace: path:$;landed;area;1;template
[D] P.trace:33 - trace: expr:
[D] P.trace:34 - trace: val:[object Object]
[D] P.trace:35 - trace: path:$;landed;area;1;template;1
[D] P.trace:33 - trace: expr:2;template;*
[D] P.trace:34 - trace: val:[object Object],[object Object],[object Object]
[D] P.trace:35 - trace: path:$;landed;area
[D] P.trace:33 - trace: expr:template;*
[D] P.trace:34 - trace: val:[object Object]
[D] P.trace:35 - trace: path:$;landed;area;2
[D] P.trace:33 - trace: expr:*
[D] P.trace:34 - trace: val:[object Object],[object Object]
[D] P.trace:35 - trace: path:$;landed;area;2;template
[D] P.trace:33 - trace: expr:0;
[D] P.trace:34 - trace: val:[object Object],[object Object]
[D] P.trace:35 - trace: path:$;landed;area;2;template
[D] P.trace:33 - trace: expr:
[D] P.trace:34 - trace: val:[object Object]
[D] P.trace:35 - trace: path:$;landed;area;2;template;0
[D] P.trace:33 - trace: expr:1;
[D] P.trace:34 - trace: val:[object Object],[object Object]
[D] P.trace:35 - trace: path:$;landed;area;2;template
[D] P.trace:33 - trace: expr:
[D] P.trace:34 - trace: val:[object Object]
[D] P.trace:35 - trace: path:$;landed;area;2;template;1
[D] parseJSONString:14 - readDataModel.js: objectArray.length: 6
//end console.log output
Original issue reported on code.google.com by flyingsh...@gmail.com on 10 Feb 2014 at 9:55