Peter Uhnák wrote:
Hi Sven, shouldn't it be set to #ignore by default for JSON then? Or is there a use case where it makes sense to have something else for JSON?
To keep STON practices / assumptions while using JSON to hold the data where STON is not supported yet, maybe? IIRC STON is positioning itself as JSON superset; but maybe only syntactic superset, while semantically it can be a bit different (so STONize to more low-level, JSON, syntax via STON; JSONize faithfully to JSON semantics using NeoJSON; but maybe I am just making things up).
Herbert: I am not talking about (infinitely) recursive references, but
I know; Sven explicitly asked what to do with cycles in that case, though.
referencing the same object, e.g. Peter On Tue, Mar 27, 2018 at 6:08 PM, Herbert Vojčík <he...@mailbox.sk <mailto:he...@mailbox.sk>> wrote: Sven Van Caekenberghe wrote: Hi Peter, Both cases will pass using this expression: String streamContents: [ :out | STON jsonWriter referencePolicy: #ignore; on: out; nextPut: d ]. The problem is what to do with cycles. Be faithful to what JSON.stringify does in JS. See attachment. :-) Herby Sven On 27 Mar 2018, at 17:43, Peter Uhnák<i.uh...@gmail.com <mailto:i.uh...@gmail.com>> wrote: Hi, I don't think this should throw an error when I am producing JSON. ``` d := { 'a' -> #(). 'b' -> #(). } asDictionary. STON toJsonString: d. ``` dtto this ``` a := {'hm'}. d := { 'a' -> a. 'b' -> a. } asDictionary. STON toJsonString: d. ``` Maybe I should forgo using STON>>toJson* out of laziness (it is preinstalled) and always go for NeoJSON? Peter