-3

我无法从我的 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"
  }
],
4

2 回答 2

1

试试这个代码

首先,您需要提取 json 数组类,然后在获取 JSONObject 提取所需的值后,通过 jsonArray 循环获取 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();
        }

希望这可以帮助

于 2019-05-16T10:57:54.850 回答
0

您可以在 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) {
}
于 2019-05-16T10:53:15.383 回答