[Haskell-cafe] Ordered JSON objects?

Michael Snoyman michael at snoyman.com
Tue Dec 16 08:43:08 UTC 2014

On Tue Dec 16 2014 at 10:39:32 AM Tobias Dammers <tdammers at gmail.com> wrote:

> On Mon, Dec 15, 2014 at 11:01:12PM +0100, Wojtek Narczyński wrote:
> > On 15.12.2014 20:32, Tobias Dammers wrote:
> >
> > >Anyway, one thing I'm running up against is that I am going to need
> > >ordered key/value collections, which I believe is something JSON does
> > >not support out-of-the-box: "objects" ({"foo":15, "bar":23}) are
> > >conceptually unordered key/value collections (and Aeson treats them as
> > >such, using hash maps as the intermediate storage format), so I lose
> > >ordering;
> >
> > JSON does not forbid ordering of maps by key, I believe. But you'd need
> to
> > create an OrderedMap and patch aeson. It would be very useful, the
> mixing of
> > key order is nuisance for human JSON consumers.
> No, that's not what I meant. By "ordered", I meant that the in-memory
> representation of the document should maintain file order. Aeson uses a
> HashMap to store key/value objects, which is an unordered container;
> what you suggest would be something like Map (storing elements by key
> order), but what I'm talking about is more like [(Key, Value)], i.e.,
> keeping file order intact.
I think your best bet is to bite the bullet and just deal with an array,
forgetting the object entirely (at least at the top level). Any time I've
needed to implement some kind of ordered data in JSON, I've used an array.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20141216/d735b7fb/attachment.html>

More information about the Haskell-Cafe mailing list