2014-06-19 24 views
1

我最近開始做Android開發,我使用Parse.com和本地Java構建應用程序。我想要做的是弄清楚如何通過Parse Parse.com的回調來創建從JSON結果創建的對象。使用Parse和Java爲Android創建JSON對象

{ 
"result": 
{ 
"count": 3, 
"lang": "en-US", 
"tasks": [ 
    { 
     "ID": "0123", 
     "Name": "Task 1", 
     "AssingedTo": "Darxval", 
     "Scope": "Home" 
    }, 
    { 
     "ID": "0124", 
     "Name": "Task 2", 
     "AssingedTo": "Darxval", 
     "Scope": "Home" 
    }, 
    { 
     "ID": "0125", 
     "Name": "Task 3", 
     "AssingedTo": "Darxval", 
     "Scope": "Home" 
    } 
    ] 
} 
} 

我通過Parse調用的方法如下所示。 (見文檔獲取更多信息的方法,在這裏):Parse Documentation

ParseCloud.callFunctionInBackground("RetrieveTasks", new HashMap<String, Object>(), new FunctionCallback<Object>() { 
    void done(Object result, ParseException e) { 
    if (e == null) { 
     // do stuff with object 
    } 
    } 
}); 

我試圖函數回調更改爲類,它描述成一串字符串和任務對象的ListArray的JSON。但它不會創建對象。它總是希望使用HashMap。有沒有辦法將數據轉換爲我想要的對象而不是HashMap?有我需要「實現」我的對象上的接口,以允許在回調中創建對象嗎?

任何幫助,將不勝感激。

回答

0

什麼對象被添加到HashMap?它是一個JSONObject? 如果是這樣,您可以使用構造函數將JSONObject轉換爲您正在查找的任何自定義對象,以及來自JSONObject的數據。

例如,如果返回你的JSONObject被稱爲 「輸出」:

try { 
     JSONObject result = output.getJSONObject("result"); 
     int count = result.getInt("count"); 
     String lang = result.getString("lang"); 

     JSONArray tasks = result.getJSONArray("tasks"); 
     JSONObject firstObjectInArray = tasks.getJSONObject(0); 
     String firstID = firstObjectInArray.getString("ID"); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

然後用你的構造你的對象來創建新的對象:

Object obj = new Object(count, lang, firstID); 

For more information

+0

hasMap(s)似乎只是字符串,而數組的ListArray >。 – Darxval

+0

老實說,我有點不清楚你的原始問題,因爲我從來沒有使用這些解析方法。但是,如果返回的是字符串,你可以使用JSONObject newjsonobject = new JSONObject(string);創建JSONObject,然後使用我最初放在我的答案中解析它? – RogueBaneling

+0

我會嘗試更加清楚地解釋一下,也許它也是我對Java JSONObject的無知的一部分,我將研究更多關於該對象的知識,但Parse的回調方法從我在Parse系統中編寫的API中構建JSON,返回鍵值的HashMap,鍵值是字符串和對象,我必須將對象轉換爲字符串或ListArray來檢索數據。我的希望是我可以說新的FunctionCallback ()並且可以隨時創建該類。 – Darxval