Hi Sven,

2013/3/18 Sven Van Caekenberghe-2 [via Smalltalk]
> There is however a problem: the basic JSON spec is deliberately limited
> and vague about certain aspects, and even non existing for other aspects
> such as typing, references or cycles. There exist numerous ways to add those
> to JSON, some very complicated ones, often coming from statically typed
> languages. Many of those kill the human readability/writability of JSON. The
> problem of how to encode a type or class in JSON across languages is
> actually unsolved. That is why I decided not to implement any support for
> that.

> With NeoJSON mappings your are supposed to know upfront what types your
> JSON represents/contains. This works fine in many cases but certainly not
> all.

In this case I know it. And I Just need the writter and not the
reader, altough it might be useful in the future.

> Circular references will always be a problem.
> Structure sharing is extra complicated, it requires both reader and writer
> support with an objet table.

Yes, this happens with any serializer without global state or object table :)

> STON, which is very similar but incompatible with JSON, has support for
> all these aspects, right out of the box, no mapping required. If you do not
> have to interact with foreign systems, that is an option.

In this case JSON is mandatory. The consumer of the data is a mobile device.
The other alternative is, god forbid, XML, which isn't friendly in
terms of bandwidth.

> Support for one of the many semantics built on top of JSON will have to be
> built by hand. Hopefully the mapping layer can help there. But like you
> said: you'll have to play with custom mappings. The mapping system is pretty
> simple to understand.

Yes, but sometimes I feel the need to be able to map instVars/accesors
to encoder/decoders without having to use an schema (defined by a
symbol). I haven't found the case where it is not an extra step.

> PS: I also have to confess that although I am using NeoJSON in various
> important projects myself, we usually stick with Dictionaries/Collections
> without doing any mapping. Only in very specific cases do we actually
> convert to specific Smalltalk objects.

Same happens here so far, I produce JSON, and get JSON back, but then
I manually pick the JSON values (deserialized as Dictionaries/Arrays)
and assign them to my objects.

I don't know what the guys from SmalltalkHub are using to
serialize/deserialize JSON.

Thanks for your support. I'll keep with using custom mappings for
almost everything that references an object which isn't "simple"
(string, dates, numbers, etc.).

Best regards,

--
Esteban.




--
View this message in context: 
http://forum.world.st/NeoJSON-Mappings-tp4677077p4677681.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.

Reply via email to