View Issue Details

IDProjectCategoryView StatusLast Update
000866310000-006: MappingsSpecpublic2024-06-12 14:09
ReporterFrank Fischer Assigned ToRandy Armstrong  
PrioritynormalSeveritymajorReproducibilityhave not tried
Status closedResolutionreopened 
Product Version1.05.01 
Fixed in Version1.05.04 RC1 
Summary0008663: Multi-dimensional Array encoding in JSON is inconsistent
Description

I can understand why in non-reversible encoding arrays are encoded as nested JSON arrays and I think this is OK. So this issue is about the reversible JSON encoding, in this encoding multi-dimensional arrays inside the Variant are encoded as flat arrays with additional Dimension information, which is consistent with the binary and XML encoding. However for arrays embedded directly into Structures these are always encoded as nested arrays, so this is inconsistent with the JSON encoding itself and the binary and XML encoding.

Using nested arrays for the reversible encoding has several disadvantages, it increases the size of the encoded data, it is more complex and thus slower to encode and decode furthermore the increased complexity also makes it more error-prone to decode.

TagsNo tags attached.
Commit Version1.05.03
Fix Due Date

Activities

Randy Armstrong

2023-03-21 19:05

administrator   ~0018941

The change is a breaking change.

Jim Luth

2023-03-21 19:05

administrator   ~0018942

Agreed to no fix in Dallas meeting.

Matthias Damm

2023-09-15 11:29

developer   ~0019994

There are other breaking changes in this version e.g. 0007892 changes the casing of Picoseconds which breaks the datavalue encoding.
With the argumentation of the "rare use", we can change also make the array encoding consitent between reversible Variant and reversible Matrix in Structures since it is a very rare case to have matrix in structures.

In Binary encoding and XML encoding are identical between Variant and Matrix embedded in Structures. Only the dimension information is at a different position in binary. The value encoding is the same.

For JSON reversable, we need to implement two completely different decoders for both cases which makes no sense for the reversable encoding. Especially since the Matrix encoding in Structures is very inefficient for encoding and decoding.

Randy Armstrong

2023-09-20 11:37

administrator   ~0020024

Made the variant encoding consistent by adding:
The ArrayDimensions field shall only be present if the number of dimensions is 2 or greater and all dimensions have a length greater than 0

Jim Luth

2023-09-20 11:38

administrator   ~0020025

Agreed to changes in F2F.

Matthias Damm

2024-02-06 17:30

developer   ~0020774

Since we work on a V2 JSON encoding, we make the encoding of matrix consistent between structure fields and Variant.

Randy Armstrong

2024-06-12 14:09

administrator   ~0021321

The new Compact and Verbose encoding using the same encoding for embedded Matrix and Matrix in Variant.

Jim Luth

2024-06-12 14:09

administrator   ~0021322

Agreed this is fixed in virtual F2F.

Issue History

Date Modified Username Field Change
2023-01-31 14:28 Frank Fischer New Issue
2023-03-21 19:05 Randy Armstrong Assigned To => Randy Armstrong
2023-03-21 19:05 Randy Armstrong Status new => resolved
2023-03-21 19:05 Randy Armstrong Resolution open => won't fix
2023-03-21 19:05 Randy Armstrong Note Added: 0018941
2023-03-21 19:05 Jim Luth Status resolved => closed
2023-03-21 19:05 Jim Luth Note Added: 0018942
2023-09-15 11:29 Matthias Damm Status closed => feedback
2023-09-15 11:29 Matthias Damm Resolution won't fix => reopened
2023-09-15 11:29 Matthias Damm Note Added: 0019994
2023-09-20 11:37 Randy Armstrong Status feedback => resolved
2023-09-20 11:37 Randy Armstrong Resolution reopened => fixed
2023-09-20 11:37 Randy Armstrong Fixed in Version => 1.05.03
2023-09-20 11:37 Randy Armstrong Note Added: 0020024
2023-09-20 11:38 Jim Luth Status resolved => closed
2023-09-20 11:38 Jim Luth Commit Version => 1.05.03
2023-09-20 11:38 Jim Luth Note Added: 0020025
2024-02-06 17:30 Matthias Damm Status closed => feedback
2024-02-06 17:30 Matthias Damm Resolution fixed => reopened
2024-02-06 17:30 Matthias Damm Note Added: 0020774
2024-06-12 14:09 Randy Armstrong Status feedback => resolved
2024-06-12 14:09 Randy Armstrong Fixed in Version 1.05.03 => 1.05.04 RC1
2024-06-12 14:09 Randy Armstrong Note Added: 0021321
2024-06-12 14:09 Jim Luth Status resolved => closed
2024-06-12 14:09 Jim Luth Note Added: 0021322