我有这个 JSON 字符串。
{
"drtest": {
"password":"dr123",
"presence": {
"lastSeen":1485992132269,
"status":"offline"
},
"role":"Doctor",
"speciality":"Physiotherapist",
"token":"f80ve0sY6Ak:APA91bGLPlmy7b_iyqtW9ioG11TOx3xTB9BJgb1vvBK4YRo-28DyXWydg476TvjzaxyNB3kTTMn0BycEDm9UJHAPeoWzV-vFrwN46hg-GKSI6DH1s9zrH8h834c2whEdr12XqWN-4jrs"
},
"patient": {
"password":"pat123",
"presence": {
"lastSeen":1486046501150,
"status":"online"
},
"role":"Patient",
"token":"f80ve0sY6Ak:APA91bGLPlmy7b_iyqtW9ioG11TOx3xTB9BJgb1vvBK4YRo-28DyXWydg476TvjzaxyNB3kTTMn0BycEDm9UJHAPeoWzV-vFrwN46hg-GKSI6DH1s9zrH8h834c2whEdr12XqWN-4jrs"
}
}
起初我一直在跟踪医生的角色,但现在我还必须跟踪专业。然而,我正在尝试应该正确工作的代码,但它没有按预期工作。
如您所见,只有一个实体具有专业数据,而其他实体不包含专业领域。如果 JSON 中没有专业字段,我该如何解析存在的专业数据并忽略?
我正在使用这段代码:
try {
contactList.clear();
JSONObject obj = new JSONObject(s);
Iterator i = obj.keys();
String key = "";
while (i.hasNext()) {
key = i.next().toString();
JSONObject singleUser = (JSONObject) obj.get(key);
String role = singleUser.get("role").toString();
JSONObject singleUser2 = (JSONObject) obj.get(key);
String tpesu= singleUser2.getString("speciality");
// no success here? need help want this value...
Log.e("specialittyyyyyyy",tpesu+"");
JSONObject presence = singleUser.getJSONObject("presence");
String status = presence.getString("status");
if (!key.equals(UserDetails.username)) {
if (role.equals("Doctor")) {
HashMap<String, String> docs = new HashMap<>();
docs.put("name", key);
docs.put("status", status);
Log.e("status ", status + "");
contactList.add(docs);
}
}
totalUsers++;
}
} catch (JSONException e) {
e.printStackTrace();
}
最佳答案
这样包含 singleUser 以避免格式或空指针异常
if(singleUser2.has("speciality")) {
tpesu = singleUser2.getString("speciality");
}
全局声明字符串 tpesu。
关于java - 无法从 jsonObject 获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42008109/