Hello,
I have this code : getMoreData | url url2 json json2 artObjectJson levelsJson| url := 'https://www.rijksmuseum.nl/api/nl/collection/' , objectNumber , '?key=14OGzuak&format=json'. url2 := 'https://www.rijksmuseum.nl/api/nl/collection/' , objectNumber , '/tiles?key=14OGzuak'. "Read the data from the api respons" json := NeoJSONReader fromString: (ZnEasy get: url) contents. artObjectJson := json at: #artObject. painter := ((artObjectJson at: #principalMakers) at: 1) at: #name. title := artObjectJson at: #title. "Read the imageUrl from the api respons" json2 := NeoJSONObject fromString: (ZnEasy get: 'https://www.rijksmuseum.nl/api/nl/collection/SK-C-1368/tiles?key=14OGzuak') contents utf8Decoded. levelsJson := (json2 at: #levels). imageUrl := levelsJson at: 1. but now I see that somethimes ZnEasy get: url gives a document of zero bytes. Now can I put the rest in a big ifFalse block or make another function for it or is there a better more smalltalk way of dealing with this "problem". Roelof |
On 28 Sep 2020, at 07:28, Roelof Wobben via Pharo-users <[hidden email]> wrote: I think it would be good if you ask de rijksmuseum api guys to explain why is correctly typed with content-type application/json, while has a missing content-type (while it is clearly also application/json). Your code can be improved as well. If you do your parsing via NeoJSONObject, you do not get Dictionaries back, but instances of NeoJSONObject (a subclass of Dictionary). These behave more like JavaScript maps/objects. You can use accessors, as if they exist, and they will turned into #at: accesses, with the additional feature of returning nil when the property is not found. So, for example, at the end, you can say json2 levels. Instead of at: 1 you can use first, together this gives you json2 levels first. The same approach is possible for the first json expression and its subsequent use (but parse via NeoJSONObject fromString:). json artObject principalMarkers first name. Coming back to your problem, 'sometimes' is not a bug report we can work on, it does not sound good. It could be that the server returns an empty response. But normally, if something is wrong, you should get a real error. The API seems cool though, I got a nice painting back retrieving one of the embedded URLs (artObject->webImage->url) using ZnEasy getJpeg: 'https://lh3.googleusercontent.com/N2m90mImdcoLacUybb_rxcktTwtr0LFhtuzxbSE9elIhElF6jpWngx96_uZ0L1TGNof5pNt4n_Ygb4KYlPTpA9o6788=s0'. If you use the Form tab in the inspector, you can see the image |
Op 28-9-2020 om 16:19 schreef Sven Van
Caekenberghe:
Thanks, I have asked the maintainers of that api but no respons at all. It looked if someone made this a long time ago and then disappeaed. So im stuck at a api which does very wierd things and I try to work around it. Maybe a idea to test first zneasy for the respons and it it's 500 then find a way to display with seaside a message that no data is found otherwise display the details Roelof |
Free forum by Nabble | Edit this page |