Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Android Build a Weather App (2015) Working with JSON Using JSONObject

How to create variables based on a json file ?

Good afternoon,

I was having a good progress in my learning about JSON, however i don't know what am i doing wrong in this exercise.

Challenge Task 1 of 1

The data in the file data.json has been loaded into a JSONObject named jsonData. Using data.json as your guide, create String variables named name, publisher, and language and set them to the appropriate values from data.json using the jsonData object.

What i'm doing in code is as follows:

JSONObject forecast = JSONObject(jsonData); String name = forecast.getString("Treehouse Book Series"); String publisher = forecast.getString("Wiley"); String language = forecast.getString("English");

Thanks so much for your remarks :)

JSONChallenge.java
// A JSONObject variable named 'jsonData'
// was loaded from the data.json file.
data.json
{
    "name":"Treehouse Book Series",
    "publisher":"Wiley",
    "language":"English",
    "books":[
        {
            "title":"HTML5 Foundations",
            "author":"Matt West",
            "pages":384
        },
        {
            "title":"CSS3 Foundations",
            "author":"Ian Lunn",
            "pages":352
        }
    ]
}

2 Answers

Seth Kroger
Seth Kroger
56,413 Points

First, since you're told jsonData is already a jsonObject, you don't need to create anyother one. Second, in using getString() you need to use it with the property name, not the value. In JSON the data for an object is written as a list of key/value pairs (property name is the same thing as a key) "key": "value" where the key/property is used to look up the value.

thanks a lot Seth.

Good day. I already pass this drill succesfully. My mistake was exactly what you said in previous comments. The right code is:

String name = jsonData.getString("name"); String publisher = jsonData.getString("publisher"); String language = jsonData.getString("language");

Regards :)