【问题标题】:How to get JSON from HTTP to Java object on Android [closed]如何在 Android 上将 JSON 从 HTTP 获取到 Java 对象 [关闭]
【发布时间】:2015-08-01 06:05:27
【问题描述】:

我想从 HTTP 获取 JSON 并将其解析为我的 Android 应用程序中的一个对象。 我用 AsyncTask 尝试过 Spring Framework,但每个人都说它已被弃用。

那么我怎样才能做到这一点,或者有人有我的教程链接吗?

【问题讨论】:

标签: java android json http


【解决方案1】:

我会在这篇文章中扩展 Denis 的提议以及何时使用给定的库。

首先是几个月前的文章JSON Libraries Performance Comparison

如果你不想阅读:

  • 将 Jackson 库用于 JSON 数据
  • small JSON 数据使用 GSON(大部分请求都很小)

【讨论】:

    【解决方案2】:

    参考这个,它会给你String的响应,你可以在jsonObject中转换它

    public static String postUrlResponse(String url,List<NameValuePair> urlParameters) 
    {
        try
        {
            System.out.println("URL : " + url);
            HttpParams httpParams = new BasicHttpParams();
            HttpClient client = new DefaultHttpClient(httpParams);
            HttpPost post = new HttpPost(url);
    
            post.setEntity(new UrlEncodedFormEntity(urlParameters));
    
            HttpResponse response = client.execute(post);
            System.out.println("\nSending 'POST' request to URL : " + url);
            System.out.println("Post parameters : " + post.getEntity());
            System.out.println("Response Code : " + 
                    response.getStatusLine().getStatusCode());
    
            BufferedReader rd = new BufferedReader(
                    new InputStreamReader(response.getEntity().getContent()));
    
            StringBuffer result = new StringBuffer();
            String line = "";
            while ((line = rd.readLine()) != null) {
                result.append(line);
            }
            return result.toString();
        }
        catch(Exception e)
        {
            e.printStackTrace();
            return e.toString();
        }
    }
    

    【讨论】:

      【解决方案3】:

      解析 JSON 的最佳库是 Jackson
      Here 是非常有用的教程。根据this 的文章你可以看到Jackson 是最快的

      【讨论】:

        【解决方案4】:

        回答我自己的问题谢谢大家。

        public static List<Events> getEvents() {
        
            List<Events> ret = new ArrayList<Events>();
            ProgressDialog pr = new ProgressDialog(context);
        
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        
        
            // YOUR URL GOES HERE
            String getUrl = "http://example.nl/CALL.ashx?Onderdeel=Feeds&AuthToken=" + WWIBCore.AuthToken;
            HttpClient http = new DefaultHttpClient();
        
            HttpResponse response = null;
            HttpGet getMethod = new HttpGet(getUrl);
            try {
                response = http.execute(getMethod);
        
                // CONVERT RESPONSE TO STRING
                String result = EntityUtils.toString(response.getEntity());
        
                // CONVERT RESPONSE STRING TO JSON ARRAY
                JSONArray ja = new JSONArray(result);
        
                // ITERATE THROUGH AND RETRIEVE EVENTS FIELDS
                int n = ja.length();
        
                for (int i = 0; i < n; i++) {
        
                    // GET INDIVIDUAL JSON OBJECT FROM JSON ARRAY
                    JSONObject jo = ja.getJSONObject(i);
        
                    // CONVERT DATA FIELDS TO EVENTS OBJECT
                    Events e = new Events();
                    e.setNaam(jo.getString(("Naam")));
                    e.setContent(jo.getString("Content"));
        
                    ret.add(e);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            pr.dismiss();
            return ret;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-05-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-16
          相关资源
          最近更新 更多