oke,

then I misunderstood you.
I thought it could be done in one step.

but detect instead of select works.

Roelof



Op 16-3-2019 om 16:32 schreef Ben Coman:


On Sat, 16 Mar 2019 at 23:29, Roelof Wobben <r.wob...@home.nl> wrote:
oke,

how do I then get the url of the line where the name is z4.

I haven't directly tested, but probably...
imageUrl1 := levelsJson detect: [ :item | (item at: #name) = 'z4' ].
imageUrl := ((imageUrl1 at: #tiles) at: 1) at: #url
 
cheers -ben

I need that because I need that line and then the tiles part which is also a collection and then the url part which also is a part of a collection

Roelof



Op 16-3-2019 om 16:24 schreef Ben Coman:


On Sat, 16 Mar 2019 at 17:05, Roelof Wobben <r.wob...@home.nl> wrote:
Thanks,

With your hint I solved it this way :

imageUrl1 := levelsJson select: [ :item | (item at: #name) = 'z4' ].
imageUrl := (((imageUrl1 at: 1) at: #tiles) at: 1) at: #url

Cool. Minor tweak... if you use #detect: instead of #select:   
which returns the first matched item rather than a collection
so you wont need ....(imageUrl1 at: 1).... part.

cheers -ben 
 

Roelof



Op 16-3-2019 om 01:04 schreef Ben Coman:


On Sat, 16 Mar 2019 at 04:21, Roelof Wobben <r.wob...@home.nl> wrote:
Hello,

I try to parse a json that differs some times

after parsing with neojson I see something like this 

"an Array(a Dictionary('height'->3640 'name'->'z0' 'tiles'->an Array(a Dictionary('url'->'http://lh3...TItQ4wwXk80sCHkqSS3JgTgmehYP-OItkO4hMwqH1agr-LfNRnxUCRSJKc_VQ=s0' 'x'->0 'y'->0 )) 'width'->404 ))"


is there a way I can filter out a dictonary where the name is equal to z4

Because of cultural differences, I'm not sure by "filter out" whether you mean include or exclude
but when filtering any collection type, #select: #detect and #reject: are you main go to messages.
If you inspect your dictionary and on the meta tab filter for ...*select*... 
you'll find #associationsSelect:
which works like this...

d := Dictionary newFromPairs: #( 1 2 3 4 5 6 ).
d associationsSelect: [ :asn | (asn key = 1) and: (asn value = 2) ]
d inspect. ==> Dictionary [1 item] (1->2 )

I notice there is not a similar #associationsReject: 
so if needed you could add your own considering...
d := Dictionary newFromPairs: #( 1 2 3 4 5 6 ).
d associations select: [ :asn | (asn key = 1) and: (asn value = 2) ]
d inspect. ==> Array [1 item] (1->2)

d := Dictionary newFromPairs: #( 1 2 3 4 5 6 ).
d associations reject: [ :asn | (asn key = 1) and: (asn value = 2) ]
d inspect. ==> Array [2 items] (5->6 3->4)

cheers -ben



Reply via email to