我将以这种形式收到服务器的回复:
{"data":[{"id":22,"name":null,"uuid":"ewfnwofnonf"},{"id":44,"name":null,"uuid":"309r0ddpaso"}]}
我想要做的是检查我的设备所在的设备的uuid并获取设备的“id”。 uuid将来自此:
String deviceId = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
这就是我的尝试:
final String deviceId = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
VolleyGetHeaders.getInstance(ProfileSetting.this, finalToken);
VolleyGetHeaders.getInstance().VolleyGETHeaders(domain, "device", new CustomListener<String>() {
@Override
public void getResult(String result) {
JSONObject obj = null;
try {
obj = new JSONObject(result);
if (obj.getString("uuid") == deviceId){
String userID = obj.getString("id");
} catch (JSONException e) {
e.printStackTrace();
}
}});
服务器已成功为我提供了一个uuid值的结果,但我有以下错误:
org.json.JSONException: No value for uuid
还有另一种方法可以在我的json响应中为匹配的“uuid”获取相应的“id”吗?
答案 0 :(得分:0)
您正在以错误的方式解析它,请尝试以下操作,
final String deviceId = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
VolleyGetHeaders.getInstance(ProfileSetting.this, finalToken);
VolleyGetHeaders.getInstance().VolleyGETHeaders(domain, "device", new CustomListener<String>() {
@Override
public void getResult(String result) {
JSONObject obj = null;
try {
obj = new JSONObject(result);
JSONArray arrData = obj.getJsonArray("data");
for (int i = 0; i < arrData.length; i++) {
JSONObject jobj=arrData.getJSONObject(i);
if (jobj.getString("uuid") == deviceId) {
String userID = obj.getString("id");
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
答案 1 :(得分:0)
您需要了解data
不仅仅是包含uuid
的对象。它实际上是一个对象数组,每个对象都包含一个uuid作为数据成员。这就是为什么当你尝试直接访问uuid时,你无法获得uuid的任何价值。一旦从阵列中找到具有匹配uuid的对象,就可以非常轻松地获得id。试试这个:
JSONObject obj = null;
String userID = null;
try {
obj = new JSONObject(result);
JSONArray arrData = obj.getJsonArray("data");
for (int i = 0; i < arrData.length; i++) {
JSONObject jobj=arrData.getJSONObject(i);
if (jobj.getString("uuid") == deviceId) {
userID = obj.getString("id");
break;
}
}
} catch (JSONException e) {
e.printStackTrace();
}
因此,当循环中断时,您将获得uuid与deviceId匹配的对象的id(作为userID)
答案 2 :(得分:0)
尝试:
JSONObject obj = null;
try {
obj = new JSONObject(result);
JSONArray arrData = obj.getJsonArray("data");
for (int i = 0; i < arrData.length; i++) {
JSONObject jobj=arrData.getJSONObject(i);
if (jobj.has("id")) {
String userID = obj.getString("id");
}
if (jobj.has("uuid")) {
String userID = obj.getString("uuid");
}
}
} catch (JSONException e) {
e.printStackTrace();
}
答案 3 :(得分:0)
你必须首先获取数组,然后解析json数组,我正在为你解释代码,希望这会对你有所帮助
private void parseJson(String s){
try {
JSONObject jsonObject = new JSONObject(s);
JSONArray jsonArray = jsonObject.getJSONArray("data");
if(jsonArray.length()>0){
for(int i =0;i<jsonArray.length();i++){
JSONObject object = jsonArray.getJSONObject(i);
Log.d("uuid:",object.getString("uuid"));
Log.d("id",object.getString("id"));
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
答案 4 :(得分:0)
{} object,[] Array 4.请根据您的答案检查以下代码,结果是否可行
JSONObject obj = null;
try {
obj = new JSONObject(result);
JSONArray jsonArray=obj.getJSONArray("data");
for(int i=0;i<jsonArray.length();i++){
JSONObject jo=jsonArray.getJSONObject(i);
String UUID=jo.getString("uuid");
if (jobj.getString("UUID") == deviceId) {
String userID = jo.getString("id");
}
}
} catch (JSONException e) {
e.printStackTrace();
}