使用gson反序列化对象的特定JSON字段

我有以下JSON字符串:

{ "ms": "images,5160.1", "turl": "http://ts1.mm.bing.net/th?id=I4693880201938488&pid=1.1", "height": "178", "width": "300", "imgurl": "http://sofzh.miximages.com/java/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" } 

我需要将imgurl的值存储在一个单独的字符串中。

这就是我现在所拥有的,但这只是给了我整个JSON字符串而不是特定的imgurl字段。

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

toExtract是JSON字符串。 这是我的数据类:

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

解析这样一个简单的结构时,不需要专用的类。

解决方案1:

要使用gson从String获取imgurURL,您可以这样做:

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

这使用原始解析到JsonObject 。

解决方案2:

或者,您可以使用在Properties实例中提取整个数据

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

并阅读您的url

 String imgurl = data.getProperty("imgurl");