Hi Paul,
There are several issues here.
NeoJSON cannot know that OrderPreservingDictionary is in fact a Dictionary, since it inherits from Collection. For that to work you have to add copy over the method
neoJsonOn: neoJSONWriter
neoJSONWriter writeMap: self
This will work for encoding, but when decoding you will get back normal Dictionaries (or the #mapClass that you set on your reader). JSON does not encode types.
Also, there are various implementations of ordered Dictionary out there in the wild. From Pharo 4 we have OrderedDictionary. NeoJSON cannot support them all, hence it supports none ;-)
STON does solve this problem.
Sven