2017-09-13 64 views
-4

我有這樣如何解析這樣的JSON?

{ 
    "status":200, 
    "message":"ok", 
    "response": {"result":1, "time": 0.0123, "values":[1,1,0,0,0,0,0,0,0] 
    } 
} 

我想獲取值數組的一個值,並把它的TextView在Eclipse JSON數據格式。看看我在eclipse中的代碼

protected void onPostExecute (String result){ 
try { 
JSONobject json = new JSONObject(result); 
tv.setText(json.toString(1)); 
}catch (JSONException e){ 
e.printStackTrace(); 
} 
} 
+2

您的代碼似乎缺少某些部分。 「try」在哪裏?功能在哪裏關閉? – nalyd88

回答

0

您可以使用jackson庫進行json解析。

ObjectMapper mapper = new ObjectMapper(); 
Map map = mapper.readTree(json); 
map.get("key"); 

您可以使用readTree如果你知道JSON是JSONObject的其他類使用typeref的實例,並與readValue去獲取地圖。

1

您可以使用GSON

您的回覆

public class Response{ 
    private int result; 
    private double time; 
    private ArrayList<Integer> values; 

    // create SET's and GET's 
} 

創建一個POJO然後用GSON創建你的願望的對象。

protected void onPostExecute (String result){ 
    try { 
    Gson gson = new GsonBuilder().create(); 
    Response p = gson.fromJson(result, Response.class); 
    tv.setText(p.getValues()); 
    }catch (JSONException e){ 
    e.printStackTrace(); 
    } 
} 
+0

非常感謝joao86的,你的代碼已經幫了我,這是工作,但我想通過索引得到值數組。我該怎麼做呢?請 –

+0

@ ahsanasha07你是什麼意思'按值得到值數組。'?如果你想獲得數組中某個位置的值,只需執行'p.getValues()。get(position)' – joao86

+0

是的,先生,我想獲得數組中某個位置的值。我嘗試p.getValues()。get(position)不起作用。 –

0
protected void onPostExecute (String result){ 
    try { 
    JSONObject json = new JSONObject(result); 
    JSONObject resp = json.getJSONObject("response"); 
JSONArray jarr = resp.getJSONArray("values"); 
    tv.setText(jarr.get(0).toString(1)); 
    }catch (JSONException e){ 
    e.printStackTrace(); 
    } 
    } 
+0

仍然無法正常工作 –

+0

感謝兄弟,現在正在工作。我只是改變tv.setText(jarr.get(0).toStirng(1)); into tv.setText(jarr.get(0).toString());完成 –

+0

如果有幫助,你可以投我一票。或者將其標記爲已回答。 –