JSONObject解析字典对象

时间:2016-04-26 17:53:04

标签: java android json object

我从服务器获取的JSON值:

{
"Status":0,
"Message":"",
"Result":{"0B":"S.C. Blue Air","0Y":"FlyYeti","1X":"Branson Air"}
}

获得结果'回复'连接后,我能够在屏幕上显示我的JSON字符串结果。

 JSONObject json = new JSONObject(response);
 String status = json.getString("Status");
 String message = json.getString("Message");
 String result = json.getString("Result");
 responseView.setText("Status" + status+ "Message" + message" + Result" + result);

我没关系"状态"和"消息"但不是"结果"因为想分开"结果"对象作为对象并且能够将它们作为对象使用。

例如: 当我在我的应用中输入 OB 时,我会得到结果 S.C.蓝空

4 个答案:

答案 0 :(得分:2)

而不是:

String result = json.getString("Result");

使用

if(json.get("Result") instanceof JSONObject){
    JSONObject object = (JSONObject) json.get("Result");
    //do what you want with JSONObject
    String ob = object.get("0B");

}

如果你想以某种方式存储它,你可以把它放到Map或创建对象,如果它总是相同的数据

答案 1 :(得分:1)

试试这个:

JSONObject json = new JSONObject(response);
JSONObject resultObj = json.getJSONObject("Result");
String OB = resultObj.getString("OB");

答案 2 :(得分:1)

试试这个

String base = ""; //Your json string;
JSONObject json = new JSONObject(base);
JSONOBject resultJson = json.getJSONObject("Result");

// Get all json keys "OB", "OY", "1X" etc in Result, so that we can get values against each key.
Set<Map.Entry<String, JsonElement>> entrySet = resultJson.entrySet();

Iterator iterator = entrySet.iterator();

for (int j = 0; j < entrySet.size(); j++) {
    String key = null; //key = "OB", "OY", "1X" etc
    try {
        Map.Entry entry = (Map.Entry) iterator.next ();
        key = entry.getKey ().toString ();
      //key = "OB", "OY", "1X" etc
    }
    catch (NoSuchElementException e) {
        e.printStackTrace ();
    }
    if (!TextUtils.isEmpty (key)) {

        Log.d ("JSON_KEY", key);
        String value = resultJson.getString(key);
        //for key = "0B", value = "S.C. Blue Air"
        //for key = "0Y", value = "FlyYeti"
        //for key = "1X", value = "Branson Air"
    }
}

它适用于任何带有动态json密钥的数组。

别忘了accept the answer&amp;如果有效的话,请进行投票。

答案 3 :(得分:1)

您可以使用某些库,例如Gson (Google)Moshi (Square) 这些库允许您将模型声明为普通的java类(通常称为POJOS),以某种方式注释,这些库将JSON中的属性绑定到java属性。

在你的情况下:

JSON:

{
"Status":0,
"Message":"",
"Result":{"0B":"S.C. Blue Air","0Y":"FlyYeti","1X":"Branson Air"}
}

MODEL:

public class MyCallResponse {
    @SerializedName("Status")
    int status;
    @SerializedName("Message")
    String message;
    @SerializedName("Result")
    Result result;
}

public class Result {
    @SerializedName("0B")
    String b;
    @SerializedName("0Y")
    String y;
    @SerializedName("0X")
    String x;
}

在这种情况下,您可以使用Gson:

MyCallResponse response = new Gson().fromJson(json, MyCallResponse.class);
Log.i("Response b", response.result.b);

查看文档以获取有关这两个库的更多信息。