Sent from my iPhone
On 11 Jun 2018, at 08:02, Norbert Hartl <norbert@hartl.name> wrote:
Am 11.06.2018 um 08:55 schrieb Richard O'Keefe <raoknz@gmail.com>:
The order of key:value pairs in a JSON "object" is really NOT supposed to matter. For example, if you put {"a":1,"b":2} into a JSON database you should not be surprised to get {"b":2,"a":1} back. Or vice versa, of course.
But when it does what do you do? It is pretty clear that the order is important for that format. So saying it shouldnât matter does not make it better. If you work with mongo DB you will see the same that for some queries you have to provide proper order of keys.
Norbert
On 8 June 2018 at 00:16, Tim Mackinnon <tim@testit.works> wrote: Thanks guys - it seems like I was on the right track.
Making my own NeoJsonObject did work, but I will go back and see if Iâm really using the js nature of the values and if for this, just an OrderedDictionary might be clearer.
As an aside, I was doing some experiments with prismic.io (a headless cms) and the order of your content when rendering it on a page(generically) is obviously important.
Tim
Sent from my iPhone
On 7 Jun 2018, at 07:46, Sven Van Caekenberghe <sven@stfx.eu> wrote:
On 7 Jun 2018, at 08:16, Norbert Hartl <norbert@hartl.name> wrote:
Am 07.06.2018 um 07:29 schrieb Sven Van Caekenberghe <sven@stfx.eu>:
Tim,
On 7 Jun 2018, at 01:37, Tim Mackinnon <tim@testit.works> wrote:
Hi - Iâve hit some Json where the outputted values (they are field names) are written out in a specific order - and the author hasnât chosen to use an array to represent those fields in a specific order.
{ âfield1â : { â¦.}, âfield2â: { ⦠} }
I think this is technically incorrect and should be:
{ [ {âfield1â : { â¦.}, âfield2â: { ⦠} ]}
Anyway - given what Iâve got, would it be a terrible idea to create my own version NeoJsonObject and just make it a subclass of OrderedDictionary?
I canât see any issues - but then I might be kidding myselfâ¦
Tim
Yea, I think you could try making a NeoJSONOrderedObject as a subclass of OrderedDictionary, modelled after NeoJSONObject. Just remember it is implemented using DNU, which will surprise you at one point.
Wouldnât be setting #mapClass: on the reader to OrderedDictionary not enough? Dictionary is the default anyway.
Norbert
Yes, of course, Norbert, it keeps the order:
(NeoJSONReader on: '{"BB":1,"CC":2,"AA":3}' readStream) mapClass: OrderedDictionary; next.
=> an OrderedDictionary('BB'->1 'CC'->2 'AA'->3)
NeoJSONWriter toString: (OrderedDictionary new at: #BB put: 1; at: #CC put: 2; at: #AA put: 3; yourself).
=> '{""BB"":1,""CC"":2,""AA"":3}'
It is not functionally 100% the same as a hypothetical NeoJSONOrderedObject, but might do.
Sven