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.
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 <s...@stfx.eu> wrote: > > > > > > > >> On 7 Jun 2018, at 08:16, Norbert Hartl <norb...@hartl.name> wrote: > >> > >> > >> > >>> Am 07.06.2018 um 07:29 schrieb Sven Van Caekenberghe <s...@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 > > >