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]);


  • brainCloud

    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"] ?


  • @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...

  • bitHeads

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

  • @JasonL
    Thank you!!

Log in to reply