【问题标题】:Android how to: get JSONObject and JSONArrayAndroid 如何:获取 JSONObject 和 JSONArray
【发布时间】:2019-05-16 10:48:01
【问题描述】:

我无法从我的 json 文件中获取 JSONArray 和 JSONObjects。

这就是我输入数组和对象的方式。

query1.getFirstInBackground(new GetCallback<ParseObject>() {
                @Override
                public void done(ParseObject object, ParseException e) {
                    if (e == null) {
                        final JSONObject myObject = new JSONObject();
                        try {
                            myObject.put("Preço", gymClassPrice.getText().toString());
                            myObject.put("Aula", gymClass.getText().toString());
                            myObject.put("Horario", gymClassSchedule.getText().toString());
                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                        myArray.put(myObject);
                        gyms.put("Classes", myArray);
                        gyms.saveInBackground();
                    } else {

                        gyms.put("Name", gymName.getText().toString());
                        gyms.put("Place", gymPlace.getText().toString());
                        gyms.put("Adress", gymLocation.getText().toString());
                        gyms.put("Schedule", gymSchedule.getText().toString());
                        gyms.put("Description", gymDescription.getText().toString());

                        try {
                            myObject.put("Preço", gymClassPrice.getText().toString());
                            myObject.put("Aula", gymClass.getText().toString());
                            myObject.put("Horario", gymClassSchedule.getText().toString());
                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                        myArray.put(myObject);
                        gyms.put("Classes", myArray);
                        gyms.saveInBackground();

                    }
                }

现在我不知道如何获得这些值。 有人可以帮帮我吗?

这是我在 json 文件中的实际数组:

 "Classes": [
  {
    "Horario": "gababa",
    "Preço": "sgaffa",
    "Aula": "vsagav"
  },
  {
    "Horario": "gababa566",
    "Preço": "sgaffa566",
    "Aula": "vsagav345"
  }
],

【问题讨论】:

    标签: android arrays json parse-platform


    【解决方案1】:

    试试这个代码

    首先你需要提取 json 数组类然后通过 jsonArray 循环到 获取 JSONObject 提取所需值后获取 JSONObject

    try {
                JSONArray array = object.getJSONArray("Classes");
                for (int i = 0; i <array.length() ; i++) {
    
                    try {
                        JSONObject jsonObject = array.getJSONObject(i);
                        // to get value of Horario
    
                        String Horario = jsonObject.getString("Horario");
    
                        // to get value of Preço
    
                        String Preço = jsonObject.getString("Preço");
    
                        // to get value of Aula
    
                        String Aula = jsonObject.getString("Aula");
                    }catch (JSONException e){
    
                    }
    
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
    

    希望对你有帮助

    【讨论】:

    • 感谢您的帮助。请问我该如何显示它?我应该使用 textView 还是 RecyclerView 还是什么?
    • @HernâniPereira 取决于您的用例,如果您想将其显示为列表,请使用回收站视图
    【解决方案2】:

    你可以在android中创建这2个函数来获取json对象和json数组

    public JSONObject getJSONObject(String name) throws JSONException {
        Object object = get(name);
        if (object instanceof JSONObject) {
            return (JSONObject) object;
        } else {
            throw JSON.typeMismatch(name, object, "JSONObject");
        }
    }
    

    二是获取json数组

    public JSONArray getJSONArray(String name) throws JSONException {
        Object object = get(name);
        if (object instanceof JSONArray) {
            return (JSONArray) object;
        } else {
            throw JSON.typeMismatch(name, object, "JSONArray");
        }
    }
    

    现在可以这样访问了,

    try {
        JSONArray badgesJsonArray = dataJsonObject.getJSONArray("Classes");
        if (Utility.validateJsonArray(badgesJsonArray)) {
            for (int i = 0; i < badgesJsonArray.length(); i++) {
                    try {
                      JSONObject badgesJsonObject = badgesJsonArray.getJSONObject(i);
                        }catch (Exception e) {
                        }
                 }
    
    } catch (Exception e) {
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多