For a deeper look into our Elektron API, look into:

Overview |  Quickstart |  Documentation |  Downloads |  Tutorials |  Articles

question

Upvotes
Accepted
9 3 6 10

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": [ ]
  • }
  • },
#technologywebsocketsjson
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
Accepted
82.7k 279 53 77

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

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Thank you.
Upvotes
82.7k 279 53 77

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

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
9 3 6 10

@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?

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.