Java 如何解析从Google返回的JSON字符串';s图像搜索API?
我有一个JSON字符串:Java 如何解析从Google返回的JSON字符串';s图像搜索API?,java,json,gson,Java,Json,Gson,我有一个JSON字符串: {"responseData": { "results": [ { "GsearchResultClass": "GimageSearch", "width": "450", "height": "450", "imageId": "Yt3TRC1vxzhazM", "tbWidth": "127", "tbHeight": "127", "unescapedUrl": "http://www.touchnote.com/
{"responseData": {
"results": [
{
"GsearchResultClass": "GimageSearch",
"width": "450",
"height": "450",
"imageId": "Yt3TRC1vxzhazM",
"tbWidth": "127",
"tbHeight": "127",
"unescapedUrl": "http://www.touchnote.com/files/assets/STAN009.jpg",
"url": "http://www.touchnote.com/files/assets/STAN009.jpg",
"visibleUrl": "www.touchnote.com",
"title": "Touchnote - Personalised \u003cb\u003eFuzzy Monkey\u003c/b\u003e greeting cards design by Dan \u003cb\u003e...\u003c/b\u003e",
"titleNoFormatting": "Touchnote - Personalised Fuzzy Monkey greeting cards design by Dan ...",
"originalContextUrl": "http://www.touchnote.com/photo/card-design/Fuzzy+Monkey",
"content": "Card Design \u003cb\u003eFuzzy Monkey\u003c/b\u003e",
"contentNoFormatting": "Card Design Fuzzy Monkey",
"tbUrl": "http://images.google.com/images?q\u003dtbn:Yt3TRC1vxzhazM:www.touchnote.com/files/assets/STAN009.jpg"
},
{
"GsearchResultClass": "GimageSearch",
"width": "640",
"height": "480",
"imageId": "c6093fGTdNvKOM",
"tbWidth": "137",
"tbHeight": "103",
"unescapedUrl": "http://stuff.fuzzymonkeyphotography.com/front_page/NEW_NEW_logo3_480px.jpg",
"url": "http://stuff.fuzzymonkeyphotography.com/front_page/NEW_NEW_logo3_480px.jpg",
"visibleUrl": "www.fuzzymonkeyphotography.com",
"title": "\u003cb\u003eFuzzy Monkey\u003c/b\u003e Photography",
"titleNoFormatting": "Fuzzy Monkey Photography",
"originalContextUrl": "http://www.fuzzymonkeyphotography.com/",
"content": "Welcome to \u003cb\u003eFuzzy Monkey\u003c/b\u003e",
"contentNoFormatting": "Welcome to Fuzzy Monkey",
"tbUrl": "http://images.google.com/images?q\u003dtbn:c6093fGTdNvKOM:stuff.fuzzymonkeyphotography.com/front_page/NEW_NEW_logo3_480px.jpg"
},
{
"GsearchResultClass": "GimageSearch",
"width": "500",
"height": "375",
"imageId": "oKdBN2qxw5JJoM",
"tbWidth": "130",
"tbHeight": "98",
"unescapedUrl": "http://farm2.static.flickr.com/1104/1434841504_edc671e65c.jpg?v\u003d0",
"url": "http://farm2.static.flickr.com/1104/1434841504_edc671e65c.jpg%3Fv%3D0",
"visibleUrl": "www.flickr.com",
"title": "http://farm2.static.flickr.com/1104/1434841504_edc671e65c.jpg?v\u003d0",
"titleNoFormatting": "http://farm2.static.flickr.com/1104/1434841504_edc671e65c.jpg?v\u003d0",
"originalContextUrl": "http://www.flickr.com/photos/maryelizajade/1434841504/in/set-72157602146748073/",
"content": "\u003cb\u003efuzzy monkey\u003c/b\u003e",
"contentNoFormatting": "fuzzy monkey",
"tbUrl": "http://images.google.com/images?q\u003dtbn:oKdBN2qxw5JJoM:farm2.static.flickr.com/1104/1434841504_edc671e65c.jpg%3Fv%3D0"
},
{
"GsearchResultClass": "GimageSearch",
"width": "500",
"height": "375",
"imageId": "GNgM5anX5NZYPM",
"tbWidth": "130",
"tbHeight": "98",
"unescapedUrl": "http://farm1.static.flickr.com/38/91607831_009166aa41.jpg",
"url": "http://farm1.static.flickr.com/38/91607831_009166aa41.jpg",
"visibleUrl": "www.flickr.com",
"title": "\u003cb\u003eFuzzy monkey\u003c/b\u003e sad face on Flickr - Photo Sharing!",
"titleNoFormatting": "Fuzzy monkey sad face on Flickr - Photo Sharing!",
"originalContextUrl": "http://www.flickr.com/photos/ajagendorf25/91607831/",
"content": "\u003cb\u003eFuzzy monkey\u003c/b\u003e sad face",
"contentNoFormatting": "Fuzzy monkey sad face",
"tbUrl": "http://images.google.com/images?q\u003dtbn:GNgM5anX5NZYPM:farm1.static.flickr.com/38/91607831_009166aa41.jpg"
}
],
"cursor": {
"pages": [
{
"start": "0",
"label": 1
},
{
"start": "4",
"label": 2
},
{
"start": "8",
"label": 3
},
{
"start": "12",
"label": 4
},
{
"start": "16",
"label": 5
},
{
"start": "20",
"label": 6
},
{
"start": "24",
"label": 7
},
{
"start": "28",
"label": 8
}
],
"estimatedResultCount": "578000",
"currentPageIndex": 0,
"moreResultsUrl": "http://www.google.com/images?oe\u003dutf8\u0026ie\u003dutf8\u0026source\u003duds\u0026start\u003d0\u0026hl\u003den\u0026q\u003dfuzzy+monkey"
}
}
, "responseDetails": null, "responseStatus": 200}
这是我收到的回应。但当我尝试解析它时,总是会失败而没有结果:
JSONObject json = new JSONObject(builder.toString());
final JSONArray geodata = json.getJSONArray("results");
final int n = geodata.length();
for (int i = 0; i < n; ++i) {
final JSONObject person = geodata.getJSONObject(i);
System.out.println(person.geString("width"));
}
jsonobjectjson=newjsonobject(builder.toString());
最终JSONArray geodata=json.getJSONArray(“结果”);
final int n=geodata.length();
对于(int i=0;i
我做错了什么?jsonobjectjson=newjsonobject(builder.toString());
JSONObject json = new JSONObject(builder.toString());
//Add this line
JSONObject responseData = json.getJSONObject("responseData");
final JSONArray geodata = responseData.getJSONArray("results");
final int n = geodata.length();
for (int i = 0; i < n; ++i) {
final JSONObject person = geodata.getJSONObject(i);
System.out.println(person.geString("width"));
}
//添加这一行
JSONObject responseData=json.getJSONObject(“responseData”);
最终JSONArray地理数据=responseData.getJSONArray(“结果”);
final int n=geodata.length();
对于(int i=0;i
尝试这种方法。您可以使用JavaAPI进行JSON处理()来解析JSON。该标准提供了基于流(如用于XML的StAX)和基于对象(如用于XML的DOM,但更轻) 了解更多信息 下面是我博客的几个链接,演示了如何使用这些API:
HashMap<String, Object> hashMap = new HashMap<>(Utility.jsonToMap(response)) ;
HashMap HashMap=newhashmap(Utility.jsonToMap(response));
使用此类:)(处理偶数列表、嵌套列表和json)
公共类实用程序{
公共静态映射jsonToMap(对象json)抛出JSONException{
if(JSONObject的json实例)
返回_jsonToMap _((JSONObject)json);
else if(json instanceof字符串)
{
JSONObject JSONObject=新的JSONObject((字符串)json);
返回JsonoMap(jsonObject);
}
返回null;
}
私有静态映射(JSONObject json)抛出JSONException{
Map retMap=newhashmap();
if(json!=JSONObject.NULL){
retMap=toMap(json);
}
返回地图;
}
私有静态映射toMap(JSONObject对象)抛出JSONException{
Map Map=newhashmap();
迭代器keysItr=object.keys();
while(keysItr.hasNext()){
String key=keysItr.next();
对象值=Object.get(键);
if(JSONArray的值实例){
值=toList((JSONArray)值);
}
else if(JSONObject的值实例){
值=toMap((JSONObject)值);
}
map.put(键、值);
}
返回图;
}
公共静态列表toList(JSONArray数组)抛出JSONException{
列表=新的ArrayList();
对于(int i=0;i
Uhm,解析完JSON后,您想对其做什么?添加异常跟踪get,以解决问题
HashMap<String, Object> hashMap = new HashMap<>(Utility.jsonToMap(response)) ;
public class Utility {
public static Map<String, Object> jsonToMap(Object json) throws JSONException {
if(json instanceof JSONObject)
return _jsonToMap_((JSONObject)json) ;
else if (json instanceof String)
{
JSONObject jsonObject = new JSONObject((String)json) ;
return _jsonToMap_(jsonObject) ;
}
return null ;
}
private static Map<String, Object> _jsonToMap_(JSONObject json) throws JSONException {
Map<String, Object> retMap = new HashMap<String, Object>();
if(json != JSONObject.NULL) {
retMap = toMap(json);
}
return retMap;
}
private static Map<String, Object> toMap(JSONObject object) throws JSONException {
Map<String, Object> map = new HashMap<String, Object>();
Iterator<String> keysItr = object.keys();
while(keysItr.hasNext()) {
String key = keysItr.next();
Object value = object.get(key);
if(value instanceof JSONArray) {
value = toList((JSONArray) value);
}
else if(value instanceof JSONObject) {
value = toMap((JSONObject) value);
}
map.put(key, value);
}
return map;
}
public static List<Object> toList(JSONArray array) throws JSONException {
List<Object> list = new ArrayList<Object>();
for(int i = 0; i < array.length(); i++) {
Object value = array.get(i);
if(value instanceof JSONArray) {
value = toList((JSONArray) value);
}
else if(value instanceof JSONObject) {
value = toMap((JSONObject) value);
}
list.add(value);
}
return list;
}
}