Java 无法从jsonObject获取字符串
我有这个JSON字符串Java 无法从jsonObject获取字符串,java,android,json,Java,Android,Json,我有这个JSON字符串 { "drtest": { "password":"dr123", "presence": { "lastSeen":1485992132269, "status":"offline" }, "role":"Doctor", "speciality":"Physiotherapist", "token":"f80v
{
"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();
}
试试看{
contactList.clear();
JSONObject obj=新的JSONObject;
迭代器i=obj.keys();
字符串键=”;
while(i.hasNext()){
key=i.next().toString();
JSONObject singleUser=(JSONObject)obj.get(key);
字符串role=singleUser.get(“role”).toString();
JSONObject singleUser2=(JSONObject)obj.get(key);
字符串tpesu=singleUser2.getString(“专业”);
//这里没有成功?需要帮助想要这个值。。。
Log.e(“speciallityyyyyyy”,tpesu+”);
JSONObject presence=singleUser.getJSONObject(“presence”);
字符串状态=presence.getString(“状态”);
如果(!key.equals(UserDetails.username)){
if(角色平等(“医生”)){
HashMap docs=新建HashMap();
文件。put(“名称”,键);
单据放置(“状态”,状态);
Log.e(“状态”,状态+”);
联系人列表。添加(文档);
}
}
totalUsers++;
}
}捕获(JSONException e){
e、 printStackTrace();
}
将singleUser这样括起来,以避免格式或空指针异常
if(singleUser2.has("speciality")) {
tpesu = singleUser2.getString("speciality");
}
全局声明字符串tpesu。将singleUser括起来,以避免格式或空指针异常
if(singleUser2.has("speciality")) {
tpesu = singleUser2.getString("speciality");
}
全局声明字符串tpesu。您可以使用“has”函数。i、 e.如果(singleUser2.has(“speciality”)…您可以使用“has”功能。i、 e.如果(singleUser2.has(“speciality”)…您的
singleUser
和singleUser2
json对象是相同的(drtest),因为您是通过引用相同的键来检索它们的。相反,让下一个可用键检索singleUser2
(singleUser2key=…
在下面的示例中)
您的singleUser
&singleUser2
json对象是相同的(drtest),因为您是通过引用相同的键
值来检索它们的。相反,让下一个可用键检索singleUser2
(singleUser2key=…
在下面的示例中)
发生的jsonexception的logcat是什么