Using numbers as JSON key.
-
hello, i did some experiment as below.
i defined a sample data which is exactly the same as data inputed.
wondering why data[1] returns "undefined" but sampleData[1] is OK?Input Parameters
{ "scriptName": "KeyTest", "scriptData": { "1": {"ID":1}, "2": {"ID":2} } }
Test Script
// get log service var logService = bridge.getLogServiceProxy(); var sampleData = { "1": {"ID":1}, "2": {"ID":2} }; logService.logInfoJson("sampleData" , sampleData); logService.logInfoJson("sampleData[1]" , sampleData[1]); logService.logInfoJson("data" , data); logService.logInfoJson("data[1]" , data[1]);
result
-
Hmm, I actually am not sure why sampleData[1] works.
I would have thought the correct syntax would have be sampleData["1"] and data["1"] ?
No?
-
@Paul-Winterhalder
actually i've tried "1" too.
the result is
sampleData[1] and sampleData["1"] are both OK,
data[1] and data["1"] both returned Undefined.
wondering why... -
Here is the thing, the input parameter
data
returned from our service proxy is a Java Map object, which does NOT support a number value as key when accessing value using object[key] syntax.A simple solution for this case is to convert the Java Map object to a real javascript JSON object like below:
data = JSON.parse(JSON.stringify(data));