Access The Marvel Developer API With REST And JSON In Delphi XE6 Firemonkey On Android And IOS

  

Developer Daniele Spinetti has some code snippets up demonstrating how to access the Marvel Developer API with Delphi XE6 Firemonkey. The API is REST based and returns JSON which are easily access anded processed using the built in REST client components. I don’t see source code for the app itself but you should be able to easily build your own version using the code snippets. Basically it uses the HeaderFooter template and then a REST client component to download the data. Once the download is complete it uses TJSONObject to parse the returned JSON and set the various data to the fields on the form. I like this code snippet as it is a good example of the JSON parser in action in Delphi XE6 Firemonkey. It does use some custom code to load the thumbnail but you can get similar code to do that here and here. This code should work on all Firemonkey platforms which are Android, IOS, Windows, and OSX. Check out the JSON parser code snippet:
procedure THeaderFooterForm.OnAfterRequest; var RetObject: TJSONObject; RetData: TJSONObject; MResult: TJSONObject; Loader: TImageLoaderThread; Thumbnail: TJSONObject; begin try RetObject := TJSONObject.ParseJSONValue(RESTResponse1.Content) as TJSONObject; RetData := RetObject.GetValue(‘data’) as TJSONObject; MResult := (RetData.GetValue(‘results’) as TJSONArray).Get(0) as TJSONObject; Thumbnail := MResult.GetValue(‘thumbnail’) as TJSONObject; Text1.Text := MResult.GetValue(‘name’).Value; // TImageLoaderThread is a custom class to retrieve the image in a background thread // and 2 anonymous methods to notify when thread finish download image and when bitmap is ready Loader := TImageLoaderThread.Create(true, nil, OnBitmapLoaded); Loader.ImgURL := Thumbnail.GetValue(‘path’).Value + ‘.’ + Thumbnail.GetValue(‘extension’).Value; Loader.Start; finally StopWait; end; end;

Head over and read the full blog post to check out the other code snippets and screenshots from the app.

Comments are closed.