Hi Sven (et al),

On 10 December 2017 at 11:45, Ben Coman <btc@openinworld.com> wrote:

3. Finally parse into real objects��the nested level holding the data you really want...

Object subclass: #Market
instanceVariableNames: 'MarketCurrency BaseCurrency MarketCurrencyLong BaseCurrencyLong MinTradeSize MarketName IsActive Created Notice IsSponsored LogoUrl'
classVariableNames: ''
package: 'Bittrex'

(ZnClient new��
enforceHttpSuccess: true;
accept: ZnMimeType applicationJson;
contentReader: [ :entity | |reader|
reader := (NeoJSONReader on: entity readStream).
reader for: BittrexResponse do: [:m|��
m mapInstVar: #success.
m mapInstVar: #message.
(m mapInstVar: #result) valueSchema: #ArrayOfMarkets].
reader for: #ArrayOfMarkets customDo: [ :mapping | mapping listOfElementSchema: Market ].
reader mapInstVarsFor: Market.��
�� �� �� reader nextAs: BittrexResponse ];
�� ��get) inspect.

==>BittrexResponse
�� �� �� success => true
�� �� �� message => ''��
�� �� �� result => an Array(a Market(LTC) a Market(DOGE) a Market(VTC) a Market(PPC) a Market(FTC) a Market(RDD)��
... Market(POWR) a Market(BTG) a Market(BTG) a Market(BTG) a Market(ADA) a Market(ENG) a Market(ENG))

So the code of [3.] above works fine when the raw response looks like this...
(ZnClient new��
url: 'https://bittrex.com/api/v1.1/public/getmarkets';
get) inspect.
==>��{"success":true,
�� �� �� �� �� "message":"",
�� �� �� �� �� "result": [{"MarketName":"BTC-LTC},{"MarketName":"BTC-NXT}]
�� �� �� �� }

But of course��[3.] doesn't work when the raw response looks like this...
(ZnClient new��
get) inspect.
==> {"success":true,
�� �� �� �� �� ��"message":"",
�� �� �� �� �� ��"result":{"Bid":0.01765465,"Ask":0.01769000,"Last":0.01763350}
�� �� �� ��}

since result is a json-object not a json-array.�� But I can't work out��
how to map the JSON object into��the 'result' instance variable��of BittrexResponse,��
where...

BittrexObject subclass: #BittrexTicker
instanceVariableNames: 'Bid Ask Last'
classVariableNames: ''
package: 'Bittrex'


My best guesses so far are uncommenting either [A.] or [B.] below...

(ZnClient new��
url: 'https://bittrex.com/api/v1.1/public/getticker?market=BTC-LTC';
enforceHttpSuccess: true;
accept: ZnMimeType applicationJson;
contentReader: [ :entity | |reader|
reader := (NeoJSONReader on: entity readStream).
reader for: BittrexResponse do: [:m|��
m mapInstVar: #success.
m mapInstVar: #message.
(m mapInstVar: #result) valueSchema: #BittrexTicker].
"A. reader for: BittrexTicker do: [ :m|
m mapInstVar: #Bid]."
"B. reader for: #BittrexTicker customDo: [ :mapping |
mapping mapWithValueSchema: BittrexTicker]."
�� �� �� reader nextAs: BittrexResponse ];
�� ��get).


Can you advise what formulation is required?��
cheers -ben