我从服务器获取的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.蓝空
答案 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);
查看文档以获取有关这两个库的更多信息。