【问题标题】:How to parse JSON results from Unirest call如何解析来自 Unirest 调用的 JSON 结果
【发布时间】:2014-07-01 02:14:41
【问题描述】:

我正在使用Unirest library 从 Mashape API 中检索 JSON。我使用以下代码拨打电话:

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

这会以我不熟悉的HttpResponse&lt;JsonNode&gt; 的形式返回我的 JSON。

通过阅读有限的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"
    }
  ]
}

【问题讨论】:

  • 我找不到任何详细说明图书馆这一部分的文档。因此我问这个问题。你用过 Unirest 库吗?你知道有什么好的文档可以帮助我吗?
  • 尝试打印 JsonNode.toString() 并告诉我它将显示什么...
  • @Haresh,刚刚尝试过,它会打印出我所追求的 Json。就像我在主帖中编辑的 json 一样。
  • unirest.io/java.html 上的文档似乎表明您在解析 JSON 方面是靠自己的,并建议使用 Jackson。只是我,还是这远不如groovyx.net.http.RESTClient方便,它返回一个response对象,response.data.blah可以检索任意JSON键

标签: java android json unirest mashape


【解决方案1】:

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

那么我们需要查看the JsonNode class。构造函数采用表示要解析的 JSON 的字符串并尝试创建 JSONObjectJSONArray。谢天谢地,这些对象来自org.json,即well documented

【讨论】:

    【解决方案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);
    

    【讨论】:

    • 这说不通,有asString的时候为什么还要用asJson再用toString?
    【解决方案3】:

    在 JSON 字符串中,有两个符号可以引导您完成解析:

    { - 表示一个 JSONObject

    [ - 表示一个 JSONArray

    在解析 json 字符串时,您应该迭代地遍历这些项目。要了解您的 string 中有多少 JsonObjects 和 JsonArrays 以及您应该从哪些开始解析,请使用 json-visualizer 工具,如 this website。例如,您的字符串的结构是这样的:

    如您所见,根对象是一个 JSONObject,它由一个带有三个 jsonOnject 的 JSONArray 组成。要解析这样的结构,您可以使用:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          这应该对我有用

          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
              }
          

          【讨论】:

            【解决方案7】:
            // 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();
                    }
            

            【讨论】:

              猜你喜欢
              • 2016-07-24
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-05-28
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多