- From: Erik Bruchez <erik@bruchez.org>
- Date: Wed, 18 Nov 2015 21:48:16 -0800
- To: "public-xformsusers@w3.org" <public-xformsusers@w3.org>, Forms WG <public-forms@w3.org>
All,
Still on the topic of JSON support [1], I think the trickiest bit is
the handling of empty arrays, and the handling of `array="true"`.
In the case of non-empty arrays, the logic seems pretty simple: each
array element is represented by an XML element with the attribute
`array="true"` on it:
- If the array is a property value in an object, the item has the name
of the property.
- If the array is anonymous, whether top-level or within another
array, the item has a blank name and a `_` XML name.
So far so good, and the examples reflect that.
Now we come to empty arrays. The first example is:
{"p": []}
The XML mapping is:
<json object="true"><p array="true"/></json>
This seems reasonable, and we know, when looking at the XML, that the
array is there, but has no value, because element `<p>` has no `type`
or `object` attribute and has no content.
But the outlier is the top-level empty array:
[]
which, in the examples, shows as:
<json array="true"/>
This seems to break the rule that `array="true"` is present on an XML
element which represents either an actual array element, or which
indicates that the array is empty. For consistency, shouldn't this map
instead to the following?
<json>
<_ name="" array="true"/>
</json>
Further arguing for the ugly-but-consistent solution, consider what
should happen if you want to move from an empty array to an array
containing, for example a single element, you get, as per the spec:
<json>
<_ name="" array="true" type="string">red</_>
</json>
I think that the rule for going from empty array to an array with one
element should be the same, whether you are at the top-level or not.
WDYT?
-Erik
[1] https://www.w3.org/community/xformsusers/wiki/XForms_2.0#External_JSON_values
Received on Thursday, 19 November 2015 05:49:06 UTC