[solved]JSONPATH parsing problem in a rule

Hi, Im hitting a wall when trying to parse such a JSON String
{"ok":true,"license":"CC BY 4.0 - http:\/\/creativecommons.tankerkoenig.de","data":"MTS-K","prices":{"3e563b17-f3fc-4a3d-b486-60d25e5948d5":{"status":"closed"},"bc01b1b9-b2b9-4f78-98ef-b7ee8d8a66a4":{"status":"closed"},"a53fff71-133c-48b1-84ba-20a9be6ec538":{"status":"closed"}}}
I do get the value of “ok”, which is true in here, however I tried all thinkable versions to get any of the “status” values. When trying it tat way:
var String Status = transform("JSONPATH", "$.prices(a53fff71-133c-48b1-84ba-20a9be6ec538).status", json)
the logInfo(“Check”, Status) shows nothing for Status (“22:08:00.279 [INFO ] [e.smarthome.model.script.Check] -”).
When I’m putting “” around the ID ( like “a53fff71-133c-48b1-84ba-20a9be6ec538”) I get error messages like:
22:17:00.217 [ERROR] [ntime.internal.engine.ExecuteRuleJob] - Error during the execution of rule Benzinpreise
org.eclipse.emf.common.util.BasicEList$BasicIndexOutOfBoundsException: index=2, size=2
at org.eclipse.emf.common.util.BasicEList.get(BasicEList.java:346)[63:org.eclipse.emf.common:2.11.0.v20150805-0538]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:1114)[139:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1045)[139:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:991)[139:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:114)[123:org.eclipse.smarthome.model.script:0.8.0.201605311814]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:901)[139:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:864)[139:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:223)[139:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203)[139:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:826)[139:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:263)[139:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203)[139:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:446)[139:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:227)[139:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203)[139:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:189)[139:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
at org.eclipse.smarthome.model.script.runtime.internal.engine.ScriptImpl.execute(ScriptImpl.java:77)[124:org.eclipse.smarthome.model.script.runtime:0.8.0.201605311814]
at org.eclipse.smarthome.model.rule.runtime.internal.engine.ExecuteRuleJob.execute(ExecuteRuleJob.java:60)[122:org.eclipse.smarthome.model.rule.runtime:0.8.0.201605311814]
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)[102:org.eclipse.smarthome.core.scheduler:0.8.0.201605311814]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)[102:org.eclipse.smarthome.core.scheduler:0.8.0.201605311814]

How can I get the value of any of the status settings?

Here is the original JsonPath documentation:

http://goessner.net/articles/JsonPath/

Stupid me, I saw the list of objects and threated it like an array. That was my fault, it works with:
var String Status = transform("JSONPATH", "$.prices.a53fff71-133c-48b1-84ba-20a9be6ec538.status", json)

1 Like