Parsing JSON in Android


A lot of APIs will give you responses in JSON format. Here we'll review JSON parsing in Android so that you can get to the interesting data faster.

This tutorial assumes that you've already gone through our Android getting started tutorial and are familiar with how our Android SDK works. Although we use the output from our YouTube ListSearchResults Choreo in this tutorial, the same steps we outline here will work for parsing any JSON in Android.

Get JSON output

1 Log in to Temboo and go to the YouTube > Search > ListSearchResults Choreo in our Library.

2 Enter any search term you want for the Query input and click Generate Code to test the Choreo from our website.

3 You get a whole bunch of JSON in the Response output. These are the results of the search. Next we'll see how to parse through this response in Android and pick out only the pieces we're interested in.

Parse it in Android

4 Create a new Android class and copy in the code below. In steps 5-8, we'll go over what happens in the code.

package com.temboo.android.gettingstarted.app;

import android.os.AsyncTask;
import android.util.Log;
import android.widget.TextView;

import com.temboo.Library.YouTube.Search.ListSearchResults;
import com.temboo.Library.YouTube.Search.ListSearchResults.ListSearchResultsInputSet;
import com.temboo.Library.YouTube.Search.ListSearchResults.ListSearchResultsResultSet;
import com.temboo.core.TembooSession;

import org.json.JSONArray;
import org.json.JSONObject;


/**
 * An AsyncTask that uses Temboo to search YouTube videos and to parse the JSON response
 */
class JSONTask extends AsyncTask {

	private TextView textView;

	public JSONTask(TextView textView){
		this.textView = textView;
	}

	@Override
	protected String doInBackground(Void... arg0) {
		try {
	 		// Create a new Temboo session.
			TembooSession session = new TembooSession("ACCOUNT_NAME", "APP_NAME", "APP_KEY");

			// Instantiate the YouTube.Search.ListSearchResults Choreo, using the session object.
			ListSearchResults listSearchResultsChoreo = new ListSearchResults(session);

			// Get an InputSet object
			ListSearchResultsInputSet listSearchResultsInputs = listSearchResultsChoreo.newInputSet();

			// Set inputs
			listSearchResultsInputs.set_Query("quantum entanglement");

			// Execute choreo
			ListSearchResultsResultSet listSearchResultsResults = listSearchResultsChoreo.execute(listSearchResultsInputs);

			// Parse JSON response using org.json
			JSONObject results = new JSONObject(listSearchResultsResults.get_Response());

			// Get items array
			JSONArray items = results.getJSONArray("items");

			// Get first item
			JSONObject item = items.getJSONObject(0);

			// Get the snippet object within the first item
			JSONObject snippet = item.getJSONObject("snippet");

			// Parse the title and description fields
			String title = snippet.getString("title");
			String description = snippet.getString("description");

			// Print title and description
			return title + " - " + description;
		} catch(Exception e) {
			// if an exception occurred, log it
			Log.e(this.getClass().toString(), e.getMessage());
		}
		return null;
	}

	protected void onPostExecute(String result) {
		try {
			// Update UI
			textView.setText(result);
		} catch(Exception e) {
			// if an exception occurred, show an error message
			Log.e(this.getClass().toString(), e.getMessage());
		}
	}
}

5First we converted the JSON text from the response to a Java Object using a JSONObject constructor.

6 Next, we parsed out the piece of data we want from the JSON. It helps to look at the JSON file's structure to get an idea of how it is organized. The two main elements you should look for are:

Class nameHow it appears in the JSON file
JSONArray"name": [
JSONObject"name": {

For these results, we wanted the title of the first video in the search results. We got the items array, then the first item in that array (at index 0). Then we wanted the snippet object within the first item in the array. We used the getJSONArray and getJSONObject methods for this. In other words:

Method nameDescription
getJSONArray("items")The array of videos in the search results
getJSONObject(0)The first video within those results
getJSONObject("snippet")The snippet containing descriptive details of each video

7 To finish up, we parsed the title property from the snippet object using the getString method.

8All finished! Run the code in your Android IDE to try it out. You should see the title of your first YouTube Search result in the console.

What next?

Now you should be to able to parse all sorts of JSON responses with our Android SDK. Check out the 2000+ Choreos in our Library and find some exciting data to parse.

Once you've got your code up and running, you're ready to move on and do more. From monitoring your running applications, to moving your generated Temboo code to your preferred development environment and sharing it with colleagues, collaborators and friends - we've got you covered.

Commit Code to GitHub

Commit Temboo-generated code directly to GitHub and share with the world. Learn more.

Need help?

We're always happy to help. Just email us at support@temboo.com, and we'll answer your questions.


Back