2014-05-13 44 views
15

我正在使用Unirest library從Mashape API中檢索JSON。我使用下面的代碼調用工作:如何解析來自Unirest調用的JSON結果

HttpResponse<JsonNode> request = Unirest.get(URL) 
    .header("X-Mashape-Authorization", MASHAPE_AUTH) 
    .asJson(); 

這將返回我JSON在HttpResponse<JsonNode>的形式,我不熟悉。

從讀取有限的documentation,似乎我必須調用getBody()上的響應對象才能獲取JsonNode對象。但我仍然不知道如何處理JsonNode對象。

什麼是開始解析這些數據的最佳方式?

編輯: 櫃面它有助於給的例子中,JSON我是回看起來像這樣:

{ 
    "success": "1", 
    "error_number": "", 
    "error_message": "", 
    "results": [ 
    { 
     "name": "name1", 
     "formatedName": "Name 1" 
    }, 
    { 
     "name": "testtesttest", 
     "formatedName": "Test Test Test" 
    }, 
    { 
     "name": "nametest2", 
     "formatedName": "Name Test 2" 
    }, 
    { 
     "name": "nametest3", 
     "formatedName": "Name Test 3" 
    } 
    ] 
} 
+2

我一直無法找到任何詳細介紹該庫部分的文檔。因此我問這個問題。你使用過Unirest庫嗎?你知道任何好的文檔來幫助我嗎? – user1636130

+0

嘗試打印JsonNode.toString()並讓我知道它會告訴你什麼... –

+0

@Haresh,剛剛嘗試過,它打印出我之後的Json。完全像我編輯進我的主帖的json。 – user1636130

回答

16

正試圖找出今天爲我自己。源代碼可能是您將獲得的唯一文檔。這裏的TL;博士

// the request from your question 
HttpResponse<JsonNode> request = Unirest.get(URL) 
    .header("X-Mashape-Authorization", MASHAPE_AUTH) 
    .asJson(); 

// retrieve the parsed JSONObject from the response 
JSONObject myObj = request.getBody().getObject(); 

// extract fields from the object 
String msg = myObj.getString("error_message"); 
JSONArray results = myObj.getJSONArray(); 

這裏的洞穴探險我做了一些解釋:

the HttpResponse class我們可以看到,getBody()是要返回實例變量body,它被作爲線路92分配:

this.body = (T) new JsonNode(jsonString) 

那麼我們需要看看。構造函數接受一個表示要解析的JSON的字符串,並嘗試創建一個JSONObjectJSONArray。那些物品來自org.json,這是well documented,幸好。

0
// try this way,hope this will help you... 

     String respone = "{\n" + 
       " \"success\": \"1\",\n" + 
       " \"error_number\": \"\",\n" + 
       " \"error_message\": \"\",\n" + 
       " \"results\": [\n" + 
       " {\n" + 
       "  \"name\": \"name1\",\n" + 
       "  \"formatedName\": \"Name 1\"\n" + 
       " },\n" + 
       " {\n" + 
       "  \"name\": \"testtesttest\",\n" + 
       "  \"formatedName\": \"Test Test Test\"\n" + 
       " },\n" + 
       " {\n" + 
       "  \"name\": \"nametest2\",\n" + 
       "  \"formatedName\": \"Name Test 2\"\n" + 
       " },\n" + 
       " {\n" + 
       "  \"name\": \"nametest3\",\n" + 
       "  \"formatedName\": \"Name Test 3\"\n" + 
       " }\n" + 
       " ]\n" + 
       "}"; 

     try{ 

      JSONObject responeJson = new JSONObject(respone); 
      if(responeJson.getString("success").equals("1")){ 
       JSONArray jsonArray = responeJson.getJSONArray("results"); 

       for (int i=0;i<jsonArray.length();i++){ 
        System.out.println("Name : "+jsonArray.getJSONObject(i).getString("name")); 
        System.out.println("FormatedName : "+jsonArray.getJSONObject(i).getString("formatedName")); 
       } 
      }else{ 
       Toast.makeText(this,responeJson.getString("error_message"),Toast.LENGTH_SHORT).show(); 
      } 
     }catch (Throwable e){ 
      e.printStackTrace(); 
     } 
3

在一個JSON字符串,有指導你通過分析兩個符號:

{ - 表示一個JSONObject

[ - 表示JSONArray

解析json字符串時,應該迭代地檢查這些項目。要了解字符串中有多少個JsonObjects和JsonArrays,並且您應該從中開始解析,請使用像this website這樣的json-visualizer工具。對於爲例爲您的字符串的結構是這樣的:
enter image description here

正如你看到的,根對象是一個JSONObject它由一個JSONArray的三個jsonOnjects。要解析這樣一個結構,你可以使用:

JSONObject jsonobj = new JSONObject(jsonstring); 

String result = jsonObject.getString("success"); 
String error_number = jsonObject.getString("error_number");  
String error_message = jsonObject.getString("error_message"); 

JSON Array jsonarray = jsonobj.getJSONArray(); 

String[] names = new String[jsonArray.length()];  
String[] formattedNames = new String[jsonArray.length()]; 

for(int i=0;i<jsonArray.length();i++) 
{ 
    JSONObject jsonObject = jsonArray.getJSONObject(i); 

    names [i] = jsonObject.getString("name"); 
    formattedNames [i] = jsonObject.getString("formattedName"); 
    } 
2

由於響應很容易作爲字符串檢索,因此如果您不想手動瀏覽JSON,則可以使用任何想要用於反序列化的JSON庫。我個人偏向於Google的GSON及其將您的JSON響應輕鬆映射到您創建的匹配對象的功能。

HttpRequest request = Unirest.get(/*your request URI*/) 
       .headers(/*if needed*/) 
       .queryString(/*if needed*/); 

HttpResponse<JsonNode> jsonResponse = request.asJson(); 
Gson gson = new Gson(); 
String responseJSONString = jsonResponse.getBody().toString(); 
MyResponseObject myObject = gson.fromJson(responseJSONString, String.class); 
2

Unirest有一個序列化功能(可能在2015年和2014年的答案後出來)。使用當前版本1.4.9,您可以使用方便的asObject(Class)和body(Object)方法。以下是反序列化AWS CloudSearch響應的示例。

import java.util.Arrays; 

import org.apache.http.HttpStatus; 

import com.google.gson.Gson; 
import com.google.gson.GsonBuilder; 
import com.mashape.unirest.http.HttpResponse; 
import com.mashape.unirest.http.ObjectMapper; 
import com.mashape.unirest.http.Unirest; 
import com.mashape.unirest.http.exceptions.UnirestException; 

public class UnirestExample { 
    public class Item { 
     private String full4kurl; 
     private String previewurl; 
     private String description; 

     @Override 
     public String toString() { 
      return "{full4kurl:" + full4kurl + ", previewurl:" + previewurl 
        + ", description:" + description + "}"; 
     } 
    } 

    public class Hit { 
     private String id; 
     private Item fields; 

     @Override 
     public String toString() { 
      return "{id:" + id + ", fields:" + fields + "}"; 
     } 
    } 

    public class Hits { 
     private int found; 
     private int start; 
     private Hit[] hit; 

     @Override 
     public String toString() { 
      return "{found:" + found + ", start:" + start + ", hit:" 
        + Arrays.toString(hit) + "}"; 
     } 
    } 

    public class CloudSearchResult { 
     private Hits hits; 

     @Override 
     public String toString() { 
      return "{hits:" + hits + "}"; 
     } 
    } 

    public static final String END_POINT = "AWS CloudSearch URL"; 

    static { 
     Unirest.setTimeouts(1000, 5000); 

     Unirest.setObjectMapper(new ObjectMapper() { 
      private Gson gson = new GsonBuilder().disableHtmlEscaping() 
        .create(); 

      @Override 
      public <T> T readValue(String value, Class<T> valueType) { 
       return gson.fromJson(value, valueType); 
      } 

      @Override 
      public String writeValue(Object value) { 
       return gson.toJson(value); 
      } 
     }); 
    } 

    public static void main(String[] args) throws UnirestException { 
     HttpResponse<CloudSearchResult> response = Unirest.post(END_POINT) 
       .header("Header", "header").body("body") 
       .asObject(CloudSearchResult.class); 
     if (response.getStatus() == HttpStatus.SC_OK) { 
      CloudSearchResult body = response.getBody(); 
      System.out.println(body); 
     } else { 
      throw new RuntimeException("Fail to invoke URL "); 
     } 
    } 
} 
0

這應該工作,因爲它爲我工作

System.out.println(request.getBody().getObject().toString(2)); 

示例代碼

import com.mashape.unirest.http.HttpResponse; 
import com.mashape.unirest.http.JsonNode; 
import com.mashape.unirest.http.Unirest; 

public class UnirestClient{ 
public void getQuestions() throws Exception { 
HttpResponse<JsonNode> stack= Unirest.get("https://api.stackexchange.com/2.2/questions"). 
    header("accept", "application/json"). 
    queryString("order","desc"). 
    queryString("sort", "creation"). 
    queryString("filter", "default"). 
    queryString("site", "stackoverflow"). 
    asJson(); 
System.out.println(stack.getBody().getObject().toString(2)); 
} 

public static void main(String args[]) throws Exception { 
JavaHTTPAPIClient client = new JavaHTTPAPIClient(); 
client.getQuestionsUsingUnirest(); 
} 
} 

響應

{ 
     "quota_max": 300, 
     "items": [ 
     { 
      "creation_date": 1477998742, 
      "tags": [ 
      "javascript", 
      "spring", 
      "sockjs", 
      "spring-js", 
      "sockjs-tornado" 
      ], 
      "title": "Sockjs 404 not found", 
      "link": "http://stackoverflow.com/questions/40358911/sockjs-404-not-found", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "Sviatlana", 
      "accept_rate": 71, 
      "user_type": "registered", 
      "profile_image": "https://i.stack.imgur.com/J9utH.jpg?s=128&g=1", 
      "link": "http://stackoverflow.com/users/5288347/sviatlana", 
      "reputation": 109, 
      "user_id": 5288347 
      }, 
      "last_activity_date": 1477998742, 
      "question_id": 40358911, 
      "view_count": 2, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998741, 
      "tags": [ 
      "php", 
      "html", 
      "email", 
      "magento", 
      "static-block" 
      ], 
      "title": "Creating a magento email template: custom static block not working", 
      "link": "http://stackoverflow.com/questions/40358910/creating-a-magento-email-template-custom-static-block-not-working", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "Elliot", 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/3ca06bfc99ca77598a8c58aa0945bc8a?s=128&d=identicon&r=PG&f=1", 
      "link": "http://stackoverflow.com/users/6914645/elliot", 
      "reputation": 3, 
      "user_id": 6914645 
      }, 
      "last_activity_date": 1477998741, 
      "question_id": 40358910, 
      "view_count": 1, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998733, 
      "tags": [ 
      "vba", 
      "random", 
      "macros", 
      "numbers", 
      "powerpoint" 
      ], 
      "title": "Random number Powerpoint as slide change", 
      "link": "http://stackoverflow.com/questions/40358908/random-number-powerpoint-as-slide-change", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "Luca ", 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/50594e4723d9c9235a49385e70fdc347?s=128&d=identicon&r=PG&f=1", 
      "link": "http://stackoverflow.com/users/7099333/luca", 
      "reputation": 1, 
      "user_id": 7099333 
      }, 
      "last_activity_date": 1477998733, 
      "question_id": 40358908, 
      "view_count": 2, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998717, 
      "tags": [ 
      "javascript", 
      "jquery", 
      "cordova", 
      "jquery-mobile" 
      ], 
      "title": "page redirection happening when Go button is pressed on a textbox (jquery/cordova)", 
      "link": "http://stackoverflow.com/questions/40358903/page-redirection-happening-when-go-button-is-pressed-on-a-textbox-jquery-cordov", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "Abhi", 
      "accept_rate": 58, 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/118f3b090dbf70bbb82dd280ed2f4e24?s=128&d=identicon&r=PG&f=1", 
      "link": "http://stackoverflow.com/users/5145530/abhi", 
      "reputation": 536, 
      "user_id": 5145530 
      }, 
      "last_activity_date": 1477998717, 
      "question_id": 40358903, 
      "view_count": 3, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998684, 
      "tags": [ 
      "php", 
      "wordpress", 
      "for-loop" 
      ], 
      "title": "Wordpress: looping through alternating post types and outputting featured image", 
      "link": "http://stackoverflow.com/questions/40358895/wordpress-looping-through-alternating-post-types-and-outputting-featured-image", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "icabob91", 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/4955d4f2e9bcbdee92ef49ffd76c51d6?s=128&d=identicon&r=PG&f=1", 
      "link": "http://stackoverflow.com/users/6104799/icabob91", 
      "reputation": 3, 
      "user_id": 6104799 
      }, 
      "last_activity_date": 1477998684, 
      "question_id": 40358895, 
      "view_count": 3, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998678, 
      "tags": [ 
      "python", 
      "datetime", 
      "python-3.5", 
      "timedelta" 
      ], 
      "title": "datetime difference in python3.5", 
      "link": "http://stackoverflow.com/questions/40358893/datetime-difference-in-python3-5", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "gansub", 
      "accept_rate": 85, 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/ac74b6d927012828dbd79279614f3e58?s=128&d=identicon&r=PG&f=1", 
      "link": "http://stackoverflow.com/users/4033876/gansub", 
      "reputation": 237, 
      "user_id": 4033876 
      }, 
      "last_activity_date": 1477998678, 
      "question_id": 40358893, 
      "view_count": 4, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998668, 
      "tags": [ 
      "arm", 
      "tensorflow" 
      ], 
      "title": "Wipe out dropout operations from TensorFlow graph", 
      "link": "http://stackoverflow.com/questions/40358892/wipe-out-dropout-operations-from-tensorflow-graph", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "Dmytro Prylipko", 
      "accept_rate": 40, 
      "user_type": "registered", 
      "profile_image": "https://i.stack.imgur.com/aVfpi.png?s=128&g=1", 
      "link": "http://stackoverflow.com/users/2641587/dmytro-prylipko", 
      "reputation": 98, 
      "user_id": 2641587 
      }, 
      "last_activity_date": 1477998668, 
      "question_id": 40358892, 
      "view_count": 2, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998668, 
      "tags": [ 
      "c++", 
      "qt" 
      ], 
      "title": "Scale a dynamically added widget", 
      "link": "http://stackoverflow.com/questions/40358891/scale-a-dynamically-added-widget", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "student", 
      "accept_rate": 88, 
      "user_type": "registered", 
      "profile_image": "https://graph.facebook.com/814890818587238/picture?type=large", 
      "link": "http://stackoverflow.com/users/4621626/student", 
      "reputation": 43, 
      "user_id": 4621626 
      }, 
      "last_activity_date": 1477998668, 
      "question_id": 40358891, 
      "view_count": 3, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998642, 
      "tags": ["sql"], 
      "title": "SQL returning different rows based on certain conditions", 
      "link": "http://stackoverflow.com/questions/40358889/sql-returning-different-rows-based-on-certain-conditions", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "clueless83", 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/c99db40aa014047b39b6e8222c120d84?s=128&d=identicon&r=PG&f=1", 
      "link": "http://stackoverflow.com/users/6720789/clueless83", 
      "reputation": 18, 
      "user_id": 6720789 
      }, 
      "last_activity_date": 1477998642, 
      "question_id": 40358889, 
      "view_count": 10, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998626, 
      "tags": [ 
      "angularjs", 
      "select", 
      "multiple-select" 
      ], 
      "title": "Angular: Select multiple in chrome (in firefox work perfectly)", 
      "link": "http://stackoverflow.com/questions/40358886/angular-select-multiple-in-chrome-in-firefox-work-perfectly", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "Enrique Rubio Sanchez", 
      "user_type": "registered", 
      "profile_image": "https://lh3.googleusercontent.com/-jKUZPfGsMEY/AAAAAAAAAAI/AAAAAAAAAHY/aisyHc_Xlm4/photo.jpg?sz=128", 
      "link": "http://stackoverflow.com/users/5496817/enrique-rubio-sanchez", 
      "reputation": 11, 
      "user_id": 5496817 
      }, 
      "last_activity_date": 1477998626, 
      "question_id": 40358886, 
      "view_count": 5, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998622, 
      "tags": [ 
      "c#", 
      "coloranimation" 
      ], 
      "title": "Cannot animate the color property because the object is sealed or frozen", 
      "link": "http://stackoverflow.com/questions/40358884/cannot-animate-the-color-property-because-the-object-is-sealed-or-frozen", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "Wobbles", 
      "accept_rate": 63, 
      "user_type": "registered", 
      "profile_image": "https://graph.facebook.com/100003846611758/picture?type=large", 
      "link": "http://stackoverflow.com/users/3797778/wobbles", 
      "reputation": 1691, 
      "user_id": 3797778 
      }, 
      "last_activity_date": 1477998622, 
      "question_id": 40358884, 
      "view_count": 3, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998619, 
      "tags": [ 
      "paypal", 
      "laravel-5.2", 
      "paypal-rest-sdk" 
      ], 
      "title": "Integrating Paypal Rest API to laravel 5.2 using anouarabdsslm", 
      "link": "http://stackoverflow.com/questions/40358882/integrating-paypal-rest-api-to-laravel-5-2-using-anouarabdsslm", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "Ankit Jindal", 
      "user_type": "registered", 
      "profile_image": "https://graph.facebook.com/100001546390988/picture?type=large", 
      "link": "http://stackoverflow.com/users/4198180/ankit-jindal", 
      "reputation": 6, 
      "user_id": 4198180 
      }, 
      "last_activity_date": 1477998619, 
      "question_id": 40358882, 
      "view_count": 2, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998605, 
      "tags": [ 
      "decimal", 
      "dynamics-crm-2016", 
      "editablegrid" 
      ], 
      "title": "Dynamcis CRM EditableGrid sdoesn&#39;t sets quantity to 0", 
      "link": "http://stackoverflow.com/questions/40358881/dynamcis-crm-editablegrid-sdoesnt-sets-quantity-to-0", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "ODE", 
      "accept_rate": 71, 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/3607bfe0c1a853e890ff5c746e793856?s=128&d=identicon&r=PG&f=1", 
      "link": "http://stackoverflow.com/users/3332226/ode", 
      "reputation": 82, 
      "user_id": 3332226 
      }, 
      "last_activity_date": 1477998605, 
      "question_id": 40358881, 
      "view_count": 2, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998604, 
      "tags": [ 
      "reporting-services", 
      "parameters", 
      "mdx" 
      ], 
      "title": "MDX (SSRS) Parameter subset", 
      "link": "http://stackoverflow.com/questions/40358880/mdx-ssrs-parameter-subset", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "user2181700", 
      "accept_rate": 67, 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/a973bbc5607eb4bf001c1d0587c2035d?s=128&d=identicon&r=PG", 
      "link": "http://stackoverflow.com/users/2181700/user2181700", 
      "reputation": 40, 
      "user_id": 2181700 
      }, 
      "last_activity_date": 1477998604, 
      "question_id": 40358880, 
      "view_count": 2, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998588, 
      "tags": [ 
      "bash", 
      "chef-recipe" 
      ], 
      "title": "How can I loop through bash routine in Chef?", 
      "link": "http://stackoverflow.com/questions/40358877/how-can-i-loop-through-bash-routine-in-chef", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "user5241806", 
      "accept_rate": 38, 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/f93135e0156fd5d3ecba4935a42c0c47?s=128&d=identicon&r=PG&f=1", 
      "link": "http://stackoverflow.com/users/5241806/user5241806", 
      "reputation": 63, 
      "user_id": 5241806 
      }, 
      "last_activity_date": 1477998588, 
      "question_id": 40358877, 
      "view_count": 3, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998584, 
      "tags": [ 
      "entity-framework", 
      "asp.net-web-api", 
      "unity-container" 
      ], 
      "title": "Dependency injection not working in web api call", 
      "link": "http://stackoverflow.com/questions/40358875/dependency-injection-not-working-in-web-api-call", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "Tom", 
      "accept_rate": 71, 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/71cd701f6826481858ee299f68f3205a?s=128&d=identicon&r=PG&f=1", 
      "link": "http://stackoverflow.com/users/4607841/tom", 
      "reputation": 94, 
      "user_id": 4607841 
      }, 
      "last_activity_date": 1477998584, 
      "question_id": 40358875, 
      "view_count": 5, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998573, 
      "tags": [ 
      "c++", 
      "windows", 
      "process", 
      "kill", 
      "termination" 
      ], 
      "title": "How to prevent a windows application from being killed/terminate or stop", 
      "link": "http://stackoverflow.com/questions/40358872/how-to-prevent-a-windows-application-from-being-killed-terminate-or-stop", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "Ankush Dhingra", 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/136386aece9fd21861cb2b42f24f81b6?s=128&d=identicon&r=PG&f=1", 
      "link": "http://stackoverflow.com/users/7099310/ankush-dhingra", 
      "reputation": 1, 
      "user_id": 7099310 
      }, 
      "last_activity_date": 1477998573, 
      "question_id": 40358872, 
      "view_count": 6, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998556, 
      "tags": [ 
      "python", 
      "azure", 
      "arm", 
      "azure-sdk-python" 
      ], 
      "title": "Azure python sdk for VM Resource Monitoring", 
      "link": "http://stackoverflow.com/questions/40358870/azure-python-sdk-for-vm-resource-monitoring", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "KMG", 
      "accept_rate": 26, 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/3632d43837fe92fda15ddf3b6ad5a8c2?s=128&d=identicon&r=PG&f=1", 
      "link": "http://stackoverflow.com/users/3524468/kmg", 
      "reputation": 158, 
      "user_id": 3524468 
      }, 
      "last_activity_date": 1477998556, 
      "question_id": 40358870, 
      "view_count": 3, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998521, 
      "tags": [ 
      "javascript", 
      "arrays", 
      "for-loop" 
      ], 
      "title": "JavaScript array 2 dimension for loop", 
      "link": "http://stackoverflow.com/questions/40358865/javascript-array-2-dimension-for-loop", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "Rayan Suryadikara", 
      "accept_rate": 80, 
      "user_type": "registered", 
      "profile_image": "https://graph.facebook.com/959947287411964/picture?type=large", 
      "link": "http://stackoverflow.com/users/5355995/rayan-suryadikara", 
      "reputation": 28, 
      "user_id": 5355995 
      }, 
      "last_activity_date": 1477998521, 
      "question_id": 40358865, 
      "view_count": 24, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998512, 
      "tags": [ 
      "javascript", 
      "user-interface", 
      "kendo-ui", 
      "grid" 
      ], 
      "title": "How to set the number format for hyperlinks in kendo grid column", 
      "link": "http://stackoverflow.com/questions/40358863/how-to-set-the-number-format-for-hyperlinks-in-kendo-grid-column", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "Harsha vardhan Reddy", 
      "user_type": "registered", 
      "profile_image": "https://lh6.googleusercontent.com/-tnuvSHlig1U/AAAAAAAAAAI/AAAAAAAAAdU/pBo7JDjmBpM/photo.jpg?sz=128", 
      "link": "http://stackoverflow.com/users/6323557/harsha-vardhan-reddy", 
      "reputation": 1, 
      "user_id": 6323557 
      }, 
      "last_activity_date": 1477998512, 
      "question_id": 40358863, 
      "view_count": 2, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998507, 
      "tags": [ 
      "android", 
      "achartengine" 
      ], 
      "title": "aChartEngine; getCurrentSeriesAndPoint returns null", 
      "link": "http://stackoverflow.com/questions/40358862/achartengine-getcurrentseriesandpoint-returns-null", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "Hyunin", 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/ddaf10ed143d2d44f9a1de00dc6465ec?s=128&d=identicon&r=PG&f=1", 
      "link": "http://stackoverflow.com/users/7099269/hyunin", 
      "reputation": 1, 
      "user_id": 7099269 
      }, 
      "last_activity_date": 1477998507, 
      "question_id": 40358862, 
      "view_count": 2, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998499, 
      "tags": [ 
      "c#", 
      "selenium", 
      "selenium-chromedriver" 
      ], 
      "title": "Uploading a file with Selenium C#", 
      "link": "http://stackoverflow.com/questions/40358860/uploading-a-file-with-selenium-c", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "Hoverlord", 
      "user_type": "registered", 
      "profile_image": "https://lh4.googleusercontent.com/-5spNCjwaRtU/AAAAAAAAAAI/AAAAAAAADUo/CWI4U9m0VWw/photo.jpg?sz=128", 
      "link": "http://stackoverflow.com/users/7099290/hoverlord", 
      "reputation": 1, 
      "user_id": 7099290 
      }, 
      "last_activity_date": 1477998499, 
      "question_id": 40358860, 
      "view_count": 4, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998487, 
      "tags": [ 
      "javascript", 
      "unit-testing", 
      "angular2", 
      "typescript", 
      "jasmine" 
      ], 
      "title": "Angular 2 with jasmine: test component with injected service", 
      "link": "http://stackoverflow.com/questions/40358858/angular-2-with-jasmine-test-component-with-injected-service", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "DavidL", 
      "accept_rate": 81, 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/ce4583fa48bbd2e762ba0a9aaeab7909?s=128&d=identicon&r=PG&f=1", 
      "link": "http://stackoverflow.com/users/4656551/davidl", 
      "reputation": 483, 
      "user_id": 4656551 
      }, 
      "last_activity_date": 1477998487, 
      "question_id": 40358858, 
      "view_count": 5, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998486, 
      "tags": [ 
      "c#", 
      "jquery", 
      "ajax", 
      "routes", 
      "asp.net-core-mvc" 
      ], 
      "title": "asp.net core id value in route doesn&#39;t work with ajax", 
      "link": "http://stackoverflow.com/questions/40358857/asp-net-core-id-value-in-route-doesnt-work-with-ajax", 
      "last_edit_date": 1477998683, 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "Anton Toshik", 
      "accept_rate": 86, 
      "user_type": "registered", 
      "profile_image": "https://graph.facebook.com/1259984217361793/picture?type=large", 
      "link": "http://stackoverflow.com/users/5784635/anton-toshik", 
      "reputation": 27, 
      "user_id": 5784635 
      }, 
      "last_activity_date": 1477998683, 
      "question_id": 40358857, 
      "view_count": 9, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998481, 
      "tags": [ 
      "python", 
      "string", 
      "python-3.x", 
      "machine-learning", 
      "string-matching" 
      ], 
      "title": "how to generate a set of similar strings in python", 
      "link": "http://stackoverflow.com/questions/40358855/how-to-generate-a-set-of-similar-strings-in-python", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "daiyue", 
      "accept_rate": 82, 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/55fd0f7d95a4938975026ff886c3a563?s=128&d=identicon&r=PG", 
      "link": "http://stackoverflow.com/users/766708/daiyue", 
      "reputation": 806, 
      "user_id": 766708 
      }, 
      "last_activity_date": 1477998481, 
      "question_id": 40358855, 
      "view_count": 8, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998477, 
      "tags": [ 
      "java", 
      "mysql", 
      "swing", 
      "connection-pooling" 
      ], 
      "title": "Does Connection Pooling makes Java Swing Application works faster for remote MySQL database", 
      "link": "http://stackoverflow.com/questions/40358852/does-connection-pooling-makes-java-swing-application-works-faster-for-remote-mys", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "user2200561", 
      "accept_rate": 25, 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/1b7fb8ee134a1d1fdb25350e74c3322c?s=128&d=identicon&r=PG", 
      "link": "http://stackoverflow.com/users/2200561/user2200561", 
      "reputation": 8, 
      "user_id": 2200561 
      }, 
      "last_activity_date": 1477998477, 
      "question_id": 40358852, 
      "view_count": 5, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998469, 
      "tags": [ 
      "python", 
      "apache", 
      "hadoop", 
      "mapreduce", 
      "apache-pig" 
      ], 
      "title": "Apache Pig - nested FOREACH over same relation", 
      "link": "http://stackoverflow.com/questions/40358849/apache-pig-nested-foreach-over-same-relation", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "user2817219", 
      "accept_rate": 60, 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/89b91c209b145ead1e1a4309fc048afc?s=128&d=identicon&r=PG&f=1", 
      "link": "http://stackoverflow.com/users/2817219/user2817219", 
      "reputation": 65, 
      "user_id": 2817219 
      }, 
      "last_activity_date": 1477998469, 
      "question_id": 40358849, 
      "view_count": 4, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998456, 
      "tags": [ 
      "mysql", 
      "laravel-5", 
      "eloquent" 
      ], 
      "title": "column overridden by another column with same name when using join method in eloquent", 
      "link": "http://stackoverflow.com/questions/40358846/column-overridden-by-another-column-with-same-name-when-using-join-method-in-elo", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "Mazino S Ukah", 
      "accept_rate": 100, 
      "user_type": "registered", 
      "profile_image": "https://graph.facebook.com/933943226659646/picture?type=large", 
      "link": "http://stackoverflow.com/users/5746074/mazino-s-ukah", 
      "reputation": 125, 
      "user_id": 5746074 
      }, 
      "last_activity_date": 1477998456, 
      "question_id": 40358846, 
      "view_count": 5, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998428, 
      "tags": [ 
      "javascript", 
      "http", 
      "caching", 
      "browser" 
      ], 
      "title": "Tell the browser to drop cache of image", 
      "link": "http://stackoverflow.com/questions/40358839/tell-the-browser-to-drop-cache-of-image", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "php_nub_qq", 
      "accept_rate": 86, 
      "user_type": "registered", 
      "profile_image": "https://i.stack.imgur.com/daMab.jpg?s=128&g=1", 
      "link": "http://stackoverflow.com/users/2415293/php-nub-qq", 
      "reputation": 5811, 
      "user_id": 2415293 
      }, 
      "last_activity_date": 1477998428, 
      "question_id": 40358839, 
      "view_count": 8, 
      "is_answered": false 
     }, 
     { 
      "creation_date": 1477998422, 
      "tags": [ 
      "ios", 
      "certificate", 
      "keychain", 
      "p12" 
      ], 
      "title": "Keychain asking password for importing p12 but i didn&#39;t give password", 
      "link": "http://stackoverflow.com/questions/40358836/keychain-asking-password-for-importing-p12-but-i-didnt-give-password", 
      "score": 0, 
      "answer_count": 0, 
      "owner": { 
      "display_name": "Olcay Erta?", 
      "accept_rate": 92, 
      "user_type": "registered", 
      "profile_image": "https://www.gravatar.com/avatar/f164c6c3b709c97862a0d14f7725830b?s=128&d=identicon&r=PG", 
      "link": "http://stackoverflow.com/users/614065/olcay-erta%c5%9f", 
      "reputation": 1129, 
      "user_id": 614065 
      }, 
      "last_activity_date": 1477998422, 
      "question_id": 40358836, 
      "view_count": 2, 
      "is_answered": false 
     } 
     ], 
     "has_more": true, 
     "quota_remaining": 298 
    } 
1

您可以檢索JsonNode的主體,然後將JsonNode轉換爲JSONObject以訪問這些值。爲了訪問結果,可以將其轉換爲JSONArray。

import org.json.*; 
HttpResponse<JsonNode> request = Unirest.get(URL).header("X-Mashape 
Authorization", MASHAPE_AUTH).asJson(); 
JSONObject responsejson = request.getBody().getObject(); 
JSONArray results = responsejson.getJSONArray("results"); 

然後,您可以迭代結果中的每個JSONObject。例如要獲得結果中的第一個對象

JSONObject value = results.getJSONObject(0);