Java 如何解析来自 Unirest 调用的 JSON 结果

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/23630681/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-14 00:25:02  来源:igfitidea点击:

How to parse JSON results from Unirest call

javaandroidjsonunirestmashape

提问by user1636130

I'm using the Unirest libraryto retrieve JSON from a Mashape API. I have the call working using the following code:

我正在使用Unirest 库从 Mashape API 检索 JSON。我使用以下代码进行通话:

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

This returns my JSON in the form of HttpResponse<JsonNode>, which I am unfamiliar with.

这以HttpResponse<JsonNode>我不熟悉的 形式返回我的 JSON 。

From reading the limited documentation, It seems that I have to call getBody()on the response object in order to get a JsonNode object back. I still have no idea what to do with the JsonNode object however.

从阅读有限的文档来看,似乎我必须调用getBody()响应对象才能取回 JsonNode 对象。但是,我仍然不知道如何处理 JsonNode 对象。

What is the best way to begin to parse this data?

开始解析这些数据的最佳方法是什么?

Edit:In case it helps with giving examples, the JSON I want to parse looks like this:

编辑:如果它有助于提供示例,我要解析的 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"
    }
  ]
}

采纳答案by l8nite

Was trying to figure this out today for myself. The source code is probably the only documentation you're going to get. Here's the tl;dr

今天试图为自己解决这个问题。源代码可能是您将获得的唯一文档。这是 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();

Here's some more explanation of the spelunking I did:

以下是对我所做的洞穴探险的更多解释:

From the HttpResponse classwe can see that getBody()is going to return the instance variable body, which gets assigned on line 92 as:

HttpResponse 类中我们可以看到它将getBody()返回实例变量body,它在第 92 行分配为:

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

So then we need to look at the JsonNode class. The constructor takes a string representing the JSON to be parsed and attempts to create either a JSONObjector a JSONArray. Those objects come from org.jsonwhich is well documented, thankfully.

那么我们需要查看JsonNode 类。构造函数接受一个表示要解析的 JSON 的字符串,并尝试创建 aJSONObject或 a JSONArray。这些对象都来自org.json有据可查,谢天谢地。

回答by Haresh Chhelana

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

回答by Farhad Faghihi

In a JSON string , there are two symbols that guide you through parsing :

在 JSON 字符串中,有两个符号可以指导您进行解析:

{ - indicates a JSONObject

{ - 表示一个 JSONObject

[ - indicates a JSONArray

[ - 表示一个 JSONArray

When parsing a json string, you should go through this items iteratively. To understand how many JsonObjects and JsonArrays you have in your string , and from which you should start parsing, use a json-visualizer tool like this website. for exampl for your string the structure is like this :
enter image description here

在解析 json 字符串时,您应该迭代地遍历这些项目。要了解您的 string 中有多少 JsonObjects 和 JsonArrays,以及您应该从哪里开始解析,请使用像本网站这样的 json-visualizer 工具。例如,对于您的字符串,结构如下所示:
在此处输入图片说明

As you see, the root object is a JSONObject which consists of an JSONArray with three jsonOnjects. To parse such a structure you can use :

如您所见,根对象是一个 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");
  }

回答by Peter

As the response is easily retrieved as a String, you can use any JSON library you want for deserialzion if you don't want to walk through the JSON manually. I personally am partial to Google's GSON and its ability to easily map your JSON response to an object that you create to match.

由于响应可以轻松检索为字符串,因此如果您不想手动遍历 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);

回答by Big Pumpkin

There is a Serialization feature in Unirest (probably came out after the answers in 2015 and 2014). With the current version 1.4.9, you can use the handy asObject(Class) and body(Object) methods. Here is an example of deserializing AWS CloudSearch responses.

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

回答by Some Java Guy

This should work as it worked for me

这应该对我有用

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

sample code

示例代码

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

Response

回复

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

回答by Srijan Sharma

You can retrieve the body of JsonNode and then convert the JsonNode to JSONObject to access the values. In order to access the results, you can convert it to JSONArray.

您可以检索 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");

Then you can iterate over each JSONObject in results. For example to get first object in results

然后您可以遍历结果中的每个 JSONObject。例如在结果中获取第一个对象

JSONObject value = results.getJSONObject(0);