2014-05-13 4 views
15

Ich verwende die Unirest library, um JSON von einer Mashape-API abzurufen. Ich habe den Anruf arbeitet mit dem folgenden Code:So analysieren Sie JSON-Ergebnisse von Unirest-Aufruf

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

Das ist mein JSON in Form von HttpResponse<JsonNode> gibt, die ich nicht kennen bin.

Aus dem Lesen der begrenzten documentation, Es scheint, dass ich getBody() auf das Antwortobjekt aufrufen muss, um ein JsonNode-Objekt zurück zu bekommen. Ich habe aber immer noch keine Ahnung, was ich mit dem JsonNode-Objekt anfangen soll.

Was ist der beste Weg, um mit der Analyse dieser Daten zu beginnen?

Edit: Incase hilft es mit mit Beispielen, die JSON i wie folgt aussieht kehre zurück:

{ 
    "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

Ich konnte kein Dokument finden, das diesen Teil der Bibliothek beschreibt. Daher stelle ich die Frage. Haben Sie die Unirest-Bibliothek verwendet? Weißt du eine gute Dokumentation, die mir hilft? – user1636130

+0

Versuchen Sie, JsonNode.toString() zu drucken und lassen Sie mich wissen, was es Ihnen zeigen wird ... –

+0

@Haresh, Just versucht, und es druckt die Json, nach der ich bin. Genau wie der JSON, den ich in meinen Hauptbeitrag bearbeitet habe. – user1636130

Antwort

16

Ich versuchte dies heute für mich herauszufinden. Der Quellcode ist wahrscheinlich die einzige Dokumentation, die Sie erhalten werden. Hier ist die tl; dr

// 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(); 

Hier einige weitere Erklärung der Spelunking ich getan habe:

Von the HttpResponse class können wir sehen, dass getBody() wird die Instanz-Variable body, zurückzukehren, die auf der Leitung zugewiesen wird 92 als:

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

Also dann müssen wir suchen. Der Konstruktor verwendet eine Zeichenfolge, die den zu analysierenden JSON darstellt, und versucht, entweder JSONObject oder JSONArray zu erstellen. Diese Objekte kommen glücklicherweise von org.json, was well documented ist.

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

In einem JSON-String gibt es zwei Symbole, die Sie durch Parsing führen:

{- zeigt eine JSONObject

[- zeigt eine JSONArray

Wenn Sie eine JSON-Zeichenfolge analysieren, sollten Sie diese Elemente iterativ durchlaufen. Um zu verstehen, wie viele JsonObjects und JsonArrays Sie in Ihrer Zeichenfolge haben und von wo aus Sie die Analyse starten sollten, verwenden Sie ein json-visualizer-Tool wie this website. für exampl für Ihre Zeichenfolge ist die Struktur wie folgt aus:
enter image description here

Wie Sie sehen, ist das Stammobjekt ein JSONObject, die mit drei jsonOnjects eines JSONArray besteht. Um eine solche Struktur zu parsen, können Sie verwenden:

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

Da die Antwort einfach als Zeichenfolge abgerufen werden kann, können Sie eine beliebige JSON-Bibliothek für die Deserialzion verwenden, wenn Sie den JSON nicht manuell durchlaufen möchten. Ich persönlich bin teilweise Google GSON und seine Fähigkeit, Ihre JSON-Antwort auf ein Objekt, das Sie erstellen, zu entsprechen.

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

Es gibt eine Serialisierungsfunktion in Unirest (wahrscheinlich nach den Antworten in den Jahren 2015 und 2014). Mit der aktuellen Version 1.4.9 können Sie die praktischen Methoden asObject (Class) und body (Object) verwenden. Hier sehen Sie ein Beispiel für das Deserialisieren von AWS CloudSearch-Antworten.

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

Dies sollte funktionieren, wie es für mich gearbeitet

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

Beispielcode

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(); 
} 
} 

Antwort

{ 
     "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

Sie können den Hauptteil von JsonNode abrufen und dann den JsonNode in JSONObject konvertieren, um auf die Werte zuzugreifen. Um auf die Ergebnisse zuzugreifen, können Sie sie in JSONArray konvertieren.

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

Dann können Sie über jede JSONObject in Ergebnisse iterieren. Zum Beispiel, um das erste Objekt in den Ergebnissen zu erhalten

JSONObject value = results.getJSONObject(0); 
Verwandte Themen