Saturday, February 2, 2019

java - Using gson to deserialize specific JSON field of an object



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 myurls;
}

class urlString
{
String imgurl;

}

Answer



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");

No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...