Using gson to deserialize specific JSON field of an object

38,979

When parsing such a simple structure, no need to have dedicated classes.

Solution 1 :

To get the imgurURL from your String with gson, you can do this :

JsonParser parser = new JsonParser();
JsonObject obj = parser.parse(toExtract).getAsJsonObject();
String imgurl = obj.get("imgurl").getAsString();

This uses a raw parsing into a JsonObject.

Solution 2 :

Alternatively, you could extract your whole data in a Properties instance using

 Properties data = gson.fromJson(toExtract, Properties.class);

and read your URL with

String imgurl = data.getProperty("imgurl");
Share:
38,979
Sid
Author by

Sid

Updated on March 15, 2020

Comments

  • Sid
    Sid about 4 years

    I have the following JSON string:

    {
        "ms": "images,5160.1",
        "turl": "http://ts1.mm.bing.net/th?id=I4693880201938488&pid=1.1",
        "height": "178",
        "width": "300",
        "imgurl": "http://www.attackingsoccer.com/wp-content/uploads/2011/07/World-Cup-2012-Draw.jpg",
        "offset": "0",
        "t": "World Cup 2014 Qualification – Europe Draw World Cup 2012 Draw ...",
        "w": "719",
        "h": "427",
        "ff": "jpeg",
        "fs": "52",
        "durl": "www.attackingsoccer.com/2011/07/world-cup-2012-qualification-europe...",
        "surl": "http://www.attackingsoccer.com/2011/07/world-cup-2012-qualification-europe-draw/world-cup-2012-draw/",
        "mid": "D9E91A0BA6F9E4C65C82452E2A5604BAC8744F1B",
        "k": "6",
        "ns": "API.images"
    }
    

    I need to store the value of imgurl in a separate string.

    This is what I have till now, but this just gives me the whole JSON string instead of the specific imgurl field.

    Gson gson = new Gson();
    Data data = new Data();
    data = gson.fromJson(toExtract, Data.class);
    System.out.println(data);
    

    toExtract is the JSON string. Here is my data class:

    public class Data 
    {
        public List<urlString> myurls;
    }
    
    class urlString
    {
        String imgurl;
    }