Valid Json code for elements of Type "Array"

Hi,

the protocol specification for array primitives is a little bit rare. Therefore I have some questions.

1.) Is the following json sample syntax in case of a UInt- or AsciiString-array also valid?

  1. "Elements": {
  2. "Name": "ERT_FD3_LF1",
  3. "SupportsQoSRange": 0,
  4. "Capabilities": {
  5. "Type": "Array",
  6. "Data": [5,6,10,11,13,18,19]
  7. }
  8. },

  9. "Elements": {
  10. "Name": "ERT_FD3_LF1",
  11. "SupportsQoSRange": 0,
  12. "Capabilities": {
  13. "Type": "Array",
  14. "Data": ["D1", "D2"]
  15. }
  16. },

2.) Could a array have a data-property with null, like following?

  • "Elements": {
  • "Name": "ERT_FD3_LF1",
  • "SupportsQoSRange": 0,
  • "Capabilities": {
  • "Type": "Array",
  • "Data": null
  • }
  • },

3.) or it should be a empty-Array like this:

  • "Elements": {
  • "Name": "ERT_FD3_LF1",
  • "SupportsQoSRange": 0,
  • "Capabilities": {
  • "Type": "Array",
  • "Data": [ ]
  • }
  • },

Best Answer

  • @Reinhold.Blank

    The syntax of an Array should be similar in a FieldEntry or ElementEntry. It doesn't support the short form.

    {
    "Type": "<Type>",
    "Data": [<Data>]
    }

    In a FieldEntry, an Array looks like this:

    "KEYWD_LIST": {
                    "Type": "AsciiString",
                    "Data": [
                        "TEST1",
                        "TEST2"
                    ] 
    }

    In an ElementEntry, an Array looks like this:

    "Capabilities": {
    "Type": "Array",
    "Data": {
    "Type": "UInt",
    "Data": [5,6,10,11,13,18,19]
    }

    },

    The "Type": "Array" is required by an element list and the payload (an array) is specified in the "Data" property.

Answers

  • @Reinhold.Blank

    Thanks for reaching out to us.

    I did a quick test by sending post messages to RTDS to verify how RTDS handles the array.

    I used the KEYWD_LIST field entry which contains an array.

    KEYWD_LIST "KEYWORD LIST"       30020  NULL        NONE                0  ARRAY            0

    The following arrays work.

    "KEYWD_LIST": {
    "Type": "AsciiString",
    "Data": [
    "TEST1",
    "TEST2"
    ]
    }
    ...
    ...
    "KEYWD_LIST": {
    "Type": "UInt",
    "Data": [
    1,
    2
    ]
    }
    ...
    ...
    "KEYWD_LIST": {
    "Type": "UInt",
    "Data": []
    }
    ...
    ...
    "KEYWD_LIST": {
    "Type": "AsciiString",
    "Data": []
    }

    The following arrays don't work.

    "KEYWD_LIST": {
                    "Type": "AsciiString",
                    "Data": null
                }
    ...
    ...
    "KEYWD_LIST": {
                    "Type": "UInt",
                    "Data": null
                }
    ...
    ...
    "KEYWD_LIST": {
                    "Data": [1,2,3]
                }
    ...
    ...
     "KEYWD_LIST": {
                    "Data": ["TEST1","TEST2"]
                }

    In conclusion:

    • The type of data in the array is required
    • null is not allowed
    • [] is used for an empty array

    I hope that this information is of help.

  • @Jirapongse

    Hi,

    thank your for the quick answer. I saw, you did your test using a field of a fieldlist, which is declared in the fields dictionary. So I see, that the result is far different from my expectation, because my sample based on an entry of a ElementsList wich looks originally like this.

    1. "Elements": {
    2. "Name": "ERT_FD3_LF1",
    3. "SupportsQoSRange": 0,
    4. "Capabilities": {
    5. "Type": "Array",
    6. "Data": {
    7. "Type": "UInt",

    8. "Data": [5,6,10,11,13,18,19]
    9. }
    10. },

    The question now is: In both cases (Field- and Element-Entry), does the short form vor a UInt- or AsciiString-Array not need the outer Array-Object, or is this only in case of a field-entry?