2013-03-27 71 views
0

我试图获取DATA数组内的信息,但一直没有收到任何信息。我从Dark Sky API解析这些数据:从字符串Android中获取JSON对象

hourly: { 
summary: "Mostly cloudy later this morning.", 
icon: "partly-cloudy-day", 
data: [ 
{ 
time: 1364389200, 
summary: "Partly Cloudy", 
icon: "partly-cloudy-night", 
precipIntensity: 0, 
temperature: 29.8, 
windSpeed: 2.44, 
windBearing: 60, 
cloudCover: 0.41, 
humidity: 0.88, 
pressure: 831.54, 
visibility: 6.15 
}, 
{ 
time: 1364392800, 
summary: "Partly Cloudy", 
icon: "partly-cloudy-day", 
precipIntensity: 0, 
temperature: 29.26, 
windSpeed: 2.95, 
windBearing: 45, 
cloudCover: 0.36, 
humidity: 0.88, 
pressure: 832.05, 
visibility: 6.14 
}..................} 

我想循环访问数据数组。

我做这个拿到每小时数据:

String hourly = json.getString("hourly"); 

不过,我不是从小时字符串中获取数据阵列。我错过了什么?

我在这里在正确的道路上:

JSONObject h = json.getJSONObject("hourly"); 
    String d = json.getString("data"); 

JSONArray a = h.getJSONArray("data"); 

       for(int i = 0; i < a.length(); i++){ 
        // Pulling items from the array 
        String s = h.getString("summary"); 
        String t = h.getString("temperature"); 
        aq.id(R.id.tv).text("Summary: " + s + "Temp: " + t); 
       } 

回答

2

Hourly是一个JSONObject和里面一个名为JSONArray数据使用org.json API,你可以很容易地循环使用下面的代码把他们:

JSONObject hourly = new JSONObject(json.getString("hourly")); 
    JSONArray array = hourly.getJSONArray("data"); 
    for (int i=0; i< array.length(); i++){ 
     JSONObject obj = data.getJSONObject(i); 
     //do whatever you want with your data 
    } 
+0

谢谢!我初始地在阵列中错过了obj。这有帮助! – jasonflaherty 2013-03-27 16:11:42

2

您需要使用JSONArray,因为你自己提到这个问题,这些数据是在你的JSONObjectarray

+0

感谢您的评论。 – jasonflaherty 2013-03-27 16:10:33

1

使用JSONArray得到data价值JSONObject得到hourly

每小时对象

JSONObject hourlyObj = json.getJSONObject("hourly"); 

数据阵列

JSONArray yourdataArray = hourlyObj.getJSONArray("data"); 
// loop it 
for(int i=0;i<jsonArray.length();i++){ 
     JSONObject json_data = jsonArray.getJSONObject(i); 
     String time = json_data.getString("time"); 
     // and so on 
    } 

您将获得的数据中的所有值。

+0

很好的答案。精心布局:)感谢您加入我的问题。 – jasonflaherty 2013-03-27 16:10:57

+0

很高兴帮助你。如果我的答案帮助了你。然后upvote并标记为答案。 – GoCrazy 2013-03-27 16:13:17

0

这里是一个示例代码段,这将有助于你。

JSONObject jObj = new JSONObject(results); 
       JSONArray albums = jObj.getJSONArray("pickups"); 

       for (int i = 0; i < albums.length(); i++) { 
        JSONObject c = albums.getJSONObject(i); 
        String id = c.getString("id"); 

        Record objRecord=new Record(); 
        objRecord.setId(c.getString("id")); 
        objRecord.setName(c.getString("name")); 
        objRecord.setNumber(c.getString("number")); 
        objRecord.setTime(c.getString("time")); 

        PickupList.arrayList.add(objRecord); 

       }