[Pharo-users] Is it bad to have an order NeoJsonObject?

Richard O'Keefe raoknz at gmail.com
Mon Jun 11 02:55:44 EDT 2018


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 at 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 at stfx.eu> wrote:
> >
> >
> >
> >> On 7 Jun 2018, at 08:16, Norbert Hartl <norbert at hartl.name> wrote:
> >>
> >>
> >>
> >>> Am 07.06.2018 um 07:29 schrieb Sven Van Caekenberghe <sven at stfx.eu>:
> >>>
> >>> Tim,
> >>>
> >>>> On 7 Jun 2018, at 01:37, Tim Mackinnon <tim at 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
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-users_lists.pharo.org/attachments/20180611/e3f97091/attachment.html>


More information about the Pharo-users mailing list