Ah sorry, I'm blind.

Yes, ideally it should throw up an error in case of recursive.
And I see that NeoJSON runs into infinite cycle, so I guess this should be addressed there too.



On Tue, Mar 27, 2018 at 6:41 PM, Herbert Voj����k <herby@mailbox.sk> wrote:


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 <herby@mailbox.sk
<mailto:herby@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.uhnak@gmail.com
�� �� �� �� �� �� <mailto:i.uhnak@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