Hi Marten,

There is indeed something currently not completely implemented: #valueSchema: 
and #nextAs: were added afterwards for reading (for example a collection of 
Points), the use of this concept for writing is simply not there. (compare 
NeoJSONPropertyMapping>>#readObject:from: to 
NeoJSONPropertyMapping>>#writeObject:on:)

I will think about this a bit first.

On the other hand, I am not so sure your solution is good, because you cannot 
write a generic #AsString for reading (going from String to ?). So I would 
suggest one of the other solutions mentioned in this thread.

Thanks for the feedback.

Sven

On 21 Feb 2014, at 13:56, itli...@schrievkrom.de wrote:

> Hmm, I think that something is definitly missing here.
> 
> The same code but instead of using #AsString I use DateAndTime and it
> works as expected - and that's what I would expect: use for that
> property mapping a valueSchema named "AsString".
> 
> It seems to work for all classes, when there is no predefined encoding
> available in the running system:Integer has a mathod, DateAndTime not.
> 
> Is there any reason why is works that way ?
> 
> Marten
> 
> 
> 
> 
> 
> Am 21.02.2014 12:07, schrieb Sven Van Caekenberghe:
>> 
>> On 21 Feb 2014, at 09:18, Norbert Hartl <norb...@hartl.name> wrote:
>> 
>>> Am 21.02.2014 um 07:50 schrieb itli...@schrievkrom.de:
>>> 
>>>> I have a class with an instance attribute "x" and this one contains an
>>>> integer value.
>>>> 
>>>> No when exporting this to json I want to write a string instead of this
>>>> number to the json string ...
>>>> 
>>>> neoJsonMapping: mapper
>>>> mapper for: self do: [ :mapping |
>>>>  (mapping mapInstVar: #x to: 'x') valueSchema: #AsString.
>>>> ].
>>>> 
>>>> mapper for: #AsString customDo: [ :mapping |
>>>>  mapping encoder: [ :anInteger | x asString ].
>>>>  mapping decoder: [ :aString | ... ] ].
>>>> 
>>>> But whatever I do ... only numbers are written out ... and yes of course
>>>> I could add additional accessors doing the conversion.
>>> 
> 
> 
> -- 
> Marten Feldtmann


Reply via email to