JSON对象解析对象android

时间:2016-12-19 05:30:16

标签: android json

我将以这种形式收到服务器的回复:

{"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”吗?

5 个答案:

答案 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)

  

  1. 请检查以下代码..
  2. 如果你没有得到答案,请给我提供从中获取数据的URL
  3. {} 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();
    }