2016-05-19 66 views
0

我必须从一个WebService的Android中的JSONObject,尤其是“数据”内容,然后我必须将它打印到一个ListView或一个表。如何从Android中的URL获取JsonObject?

这是我的JSON:

{ 
    "status":200, 
    "status_message":"Direct ways found", 
    "data":[{"codice_linea":"5","partenza":"Longa","ora_partenza":"17:34:00","arrivo":"Schiavon","ora_arrivo":"17:38:00"}] 
} 
+0

p.s:这个JSON的关键“数据”是一个关联数组(在PHP中)。 –

+2

问题到底是什么? –

+1

如果你想在Android中解析JSON,使用'JSONObject json = new JSONObject(jsonString)',然后使用[JSONObject的方法](https://developer.android.com/reference/org/json/JSONObject.html)去个别领域。 –

回答

0

response = { 
    "status":200, 
    "status_message":"Direct ways found", 
    "data":[{"codice_linea":"5","partenza":"Longa","ora_partenza":"17:34:00","arrivo":"Schiavon","ora_arrivo":"17:38:00"}] 
} 


String status = response.get("status");  // status = 200 
String status_message = response.get("status_message"); // status_message = "Direct ways found" 

JSONArray message = response.getJSONArray("data"); 
      List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>(); 
      for (int i = 0; i < message.length(); i++) { 
       HashMap<String, String> hm = new HashMap<String, String>(); 

       JSONObject temp = message.getJSONObject(i); 
       hm.put("codice_linea",temp.getString("codice_linea")); 
       hm.put("partenza",temp.getString("partenza")); 
       hm.put("ora_partenza",temp.getString("ora_partenza")); 
       hm.put("arrivo",temp.getString("arrivo")); 

        .................................... 
        ............................. 

       aList.add(hm); 

      } 

最后所有的JSON数据prased到List aList

然后使用自定义Listview显示在Listview

这个数据下面是完整的教程http://www.androidhive.info/2014/07/android-custom-listview-with-image-and-text-using-volley/

希望这会解决你的问题。

+0

不错,谢谢你,但还有一件事:“响应”在这里JSONArray message = response.getJSONArray(“data”);它是什么?它来自哪里?我如何通过http://example.com这样的URL获得“回复”? 再次感谢您! –

+0

因为你有数组命名的数据,所以为了将其转换成json,你必须使用getJsonArray –

+0

所以“响应”是一个JSONObject类型?谢谢 –

0

我假设你的努力得到这个Json在Android中,如果我右键试试这个:

Json Schema 2 Pojo粘贴你的榜样Json,与本站将生成POJO类

将您Json回应PojoGson

结果 compile 'com.google.code.gson:gson:2.4'

转换为POJO的:

此行添加到您的依赖

Gson gson = new Gson(); 
YourPojo yourpojo= gson.fromJson(jsonresponse, YourPojo.class); 

和处理造成任何你想要的。

如果你没有任何的努力

去谷歌和搜索如何处理的Json在Android或如何连接网络服务,例如,你可以搜索:HttpUrlConnectionOkHttpRetrofit ...

0

试试这个

JSONObject jsonObject = new org.json.JSONObject(YourJsonResponse); 
JSONArray jsonArray = jsonObject.getJSONArray("data"); 

for (int i = 0; i < jsonArray.length(); i++) { 
    jsonArray.getJSONObject(i).getString("codice_linea"); 
    jsonArray.getJSONObject(i).getString("partenza"); 
    jsonArray.getJSONObject(i).getString("ora_partenza"); 
    ...... 

} 
0

你似乎想要做的是重新创建一个包含在数组中现有的JSONObject。 如果您使用Android工具中的JSONObject,则可以使用getJSONObjectgetJSONArray。 根据本文档:

返回通过名称映射的值(如果它存在并且是JSONArray),否则返回。

返回通过名称映射的值(如果它存在并且是JSONObject),否则返回。

请参阅here了解更多详情。

0

你必须做这样的事情:

  JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET, 
         Your-url-JsonObj, null, new Response.Listener<JSONObject>() { 

          @Override 
          public void onResponse(JSONObject response) { 
           Log.d(TAG, response.toString()); 

          try { 
           // Parsing json object response 
           // response will be a json object 
           String status = response.getString("status"); 
           String status_message = response.getString("status_message"); 
           JSONArray jsonArray =jsonObject.getJSONArray("data"); 
         for (int i = 0; i < jsonArray.length(); i++) { 
     jsonArray.getJSONObject(i).getString("codice_linea"); 
     jsonArray.getJSONObject(i).getString("partenza"); 
     jsonArray.getJSONObject(i).getString("ora_partenza"); 
jsonArray.getJSONObject(i).getString("arrivo"); 
jsonArray.getJSONObject(i).getString("ora_arrivo");} 

          } catch (JSONException e) { 
           e.printStackTrace(); 
           Toast.makeText(getApplicationContext(), 
             "Error: " + e.getMessage(), 
             Toast.LENGTH_LONG).show(); 
          } 
          hidepDialog(); 
         } 
        }, new Response.ErrorListener() { 

         @Override 
         public void onErrorResponse(VolleyError error) { 
          VolleyLog.d(TAG, "Error: " + error.getMessage()); 
          Toast.makeText(getApplicationContext(), 
            error.getMessage(), Toast.LENGTH_SHORT).show(); 
          // hide the progress dialog 
          hidepDialog(); 
         } 
        }); 

      // Adding request to request queue 
      AppController.getInstance().addToRequestQueue(jsonObjReq); 
     }