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 <[email protected]> wrote: > > > >> On 7 Jun 2018, at 08:16, Norbert Hartl <[email protected]> wrote: >> >> >> >>> Am 07.06.2018 um 07:29 schrieb Sven Van Caekenberghe <[email protected]>: >>> >>> Tim, >>> >>>> On 7 Jun 2018, at 01:37, Tim Mackinnon <[email protected]> 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
