2017-03-03 55 views
1

我想使用翻新解析JSON數據,但我使用GraphQL作爲我的API。附加是我試圖解析的數據的一個例子。 我嘗試了以下鏈接中的教程:http://www.androidhive.info/2012/01/android-json-parsing-tutorial/ 但他從中提取的JSON數據來自REST API。專門使用GraphQl解析JSON數據

這裏是GraphQL數據:

{ 
"data": { 
"allEvents": { 
    "edges": [ 
    { 
     "node": { 
     "title": "UWB Weekly Meeting" 
     } 
    }, 
    { 
     "node": { 
     "title": "Startup Weekly" 
     } 
    }, 
    { 
     "node": { 
     "title": "Microsoft Capstone Opportunity" 
     } 
    }, 
    { 
     "node": { 
     "title": "UWB Camp Kickoff" 
     } 
    }, 
    { 
     "node": { 
     "title": "Agusto's Winter Event" 
     } 
    } 
    ] 
} 

}}

+0

發佈你的活動代碼... – user2025187

+0

你在使用什麼API? – marktani

回答

0

首先,你需要一個POJO(簡單Java類)與你的JSON響應預期結構。我們稱之爲Event。從你的例子,它有一個標題所以這是我們所需要的類:

public class Event { 
    private String id; 
    private String title; 

    public Event() { 

    } 

    public Event(String id, String title) { 
     this.id = id; 
     this.title = title; 
    } 

    @Override 
    public String toString() { 
     return "Event{" + 
       "id='" + id + '\'' + 
       ", title='" + title + '\'' + 
       '}'; 
    } 

    public String getId() { 
     return id; 
    } 

    public String getTitle() { 
     return title; 
    } 

} 

然後你可以使用GSON庫解析響應JSON到Event對象的列表:

Gson gson = new Gson(); 
try { 
    JSONArray jsonEvents = new JSONObject(body).getJSONObject("data").getJSONObject("allEvents").getJSONArray("edges"); 
    for (int i = 0; i < jsonEvents.length(); ++i) { 
     JSONObject event = jsonEvents.getJSONObject(i).getJSONObject("node"); 
     Log.v("TAG", gson.fromJson(event.toString(), Event.class).toString()); 
    } 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 

你可以找到一個完整的例子here

+1

嘿,我只想感謝你的幫助。我真的無法用言語解釋,但這真的很有幫助。我們試圖讓我們的代碼工作幾天,您的建議和代碼肯定有幫助。 –