Hi, I have just found the answer for the reader: -=-=-=- rectangleJson := '{ "origin" : null, "corner" : null }'. (NeoJSONReader on: rectangleJson readStream) mapInstVarsFor: Point; for: Point do: [ :mapping | mapping allowNil ]; for: Rectangle do: [ :mapping | (mapping mapInstVar: #origin) valueSchema: Point. (mapping mapInstVar: #corner) valueSchema: Point ]; nextAs: Rectangle. -=-=-=- I have an impression that there is a bug in the writer. While the following example works: -=-=-=- String streamContents: [ :stream | (NeoJSONWriter on: stream) for: Point do: [ :mapping | mapping mapAllInstVars. mapping allowNil ]; for: Rectangle do: [ :mapping | (mapping mapInstVar: #origin) valueSchema: Point. (mapping mapInstVar: #corner) valueSchema: Point ]; nextPut: Rectangle new ]. -=-=-=- the following example does not work: -=-=-=- String streamContents: [ :stream | (NeoJSONWriter on: stream) for: Point do: [ :mapping | mapping mapAllInstVars. mapping allowNil ]; for: Rectangle do: [ :mapping | (mapping mapInstVar: #origin) valueSchema: Point. (mapping mapInstVar: #corner) valueSchema: Point ]; writeNil: true; nextPut: Rectangle new ]. -=-=-=- What do you think? Juraj
On Nov 13, 2017, at 12:50, Juraj Kubelka <juraj.kubelka@icloud.com> wrote:
Hi,
Please, how should I modify the mapping to be able to parse the following example?
-=-=-=- rectangleJson := '{ "origin" : null, "corner" : null }'.
(NeoJSONReader on: rectangleJson readStream) mapInstVarsFor: Point; for: Rectangle do: [ :mapping | (mapping mapInstVar: #origin) valueSchema: Point. (mapping mapInstVar: #corner) valueSchema: Point ]; nextAs: Rectangle. -=-=-=-
I receive from a server JSON messages including null values. Can we say use Point value schema or null? How?
In the documentation I can see the example:
-=-=-=- String streamContents: [ :stream | (NeoJSONWriter on: stream) mapAllInstVarsFor: Point; writeNil: true; nextPut: Point new ]. -=-=-=- that produces {"x":null,"y":null}
But I do not see how to apply this for the following example: -=-=-=- String streamContents: [ :stream | (NeoJSONWriter on: stream) mapAllInstVarsFor: Point; for: Rectangle do: [ :mapping | (mapping mapInstVar: #origin) valueSchema: Point. (mapping mapInstVar: #corner) valueSchema: Point ]; writeNil: true; nextPut: Rectangle new ]. -=-=-=-
Thanks, Juraj