Это, конечно, уже спрашивалось, но я не смог найти решение для моего случая.
У меня есть два JSON
файла: quizzes.json
и quizzesQuestions.json
.
Первый содержит только заголовки и идентификаторы всех тестов, а второй содержит все данные, необходимые для каждого теста.
quizzes.json
[
{
"_id": "1",
"title": "blabla"
},
{
"_id": "2",
"title": "blabla2"
},
{
"_id": "3",
"title": "blabla3"
},
{
"_id": "4",
"title": "blabla4"
}
]
и quizzesQuestions.json
:
[
{
"quizId": "1",
"questions": [
{
"questionId": "1",
"translations": [
{
"lang": "fr",
"label": "Quelle est la reponse ?",
"answers": [
"reponse 1",
"reponse 2",
"reponse 3",
"reponse 4"
],
"trueAnswer": "reponse 1 2 3 or 4",
"explanation": "parce que..."
},
{
"lang": "en",
"label": "What is the answer ?",
"answers": [
"answer 1",
"answer 2",
"answer 3",
"answer 4"
],
"trueAnswer": "answer 1 2 3 or 4",
"explanation": "because..."
},
{
"lang": "de",
"label": "What is the answer ?",
"answers": [
"answer 1",
"answer 2",
"answer 3",
"answer 4"
],
"trueAnswer": "answer 1 2 3 or 4",
"explanation": "because..."
},
{
"lang": "sp",
"label": "What is the answer ?",
"answers": [
"answer 1",
"answer 2",
"answer 3",
"answer 4"
],
"trueAnswer": "answer 1 2 3 or 4",
"explanation": "because..."
}
]
},
{
"questionId": "2",
"translations": [
{
"lang": "fr",
"label": "Quelle est la reponse ?",
"answers": [
"reponse 1",
"reponse 2",
"reponse 3",
"reponse 4"
],
"trueAnswer": "reponse 1 2 3 or 4",
"explanation": "parce que..."
},
{
"lang": "en",
"label": "What is the answer ?",
"answers": [
"answer 1",
"answer 2",
"answer 3",
"answer 4"
],
"trueAnswer": "answer 1 2 3 or 4",
"explanation": "because..."
},
{
"lang": "de",
"label": "What is the answer ?",
"answers": [
"answer 1",
"answer 2",
"answer 3",
"answer 4"
],
"trueAnswer": "answer 1 2 3 or 4",
"explanation": "because..."
},
{
"lang": "sp",
"label": "What is the answer ?",
"answers": [
"answer 1",
"answer 2",
"answer 3",
"answer 4"
],
"trueAnswer": "answer 1 2 3 or 4",
"explanation": "because..."
}
]
}
]
}
]
Мне нужно извлечь один объект из файла JSON
(на данный момент он станет базой данных в будущем), который равен конкретному идентификатору. Здесь есть только одна викторина с идентификатором 1
.
Я уже могу извлечь все тесты из первого файла с Gson
и отобразить их в списке. Теперь я хочу иметь возможность получать только те тесты, которые имеют тот же идентификатор, что и тот, на который нажал пользователь, но я не знаю, как продолжить.
Вот мой Gson
код, если он поможет вам понять, что я хочу сделать:
private void parseJSON() {
String quizzesString = loadJSONFromAsset();
try {
JSONArray array = new JSONArray(quizzesString);
if(array.length() > 0) {
Gson gson = new Gson();
int i = 0;
while(i < array.length()) {
quizzes.add(gson.fromJson(array.getJSONObject(i).toString(), Quizzes.class));
i++;
}
} else {
Log.d(TAG, "parseJSON: No Objects");
}
} catch (JSONException e) {
e.printStackTrace();
}
}
private String loadJSONFromAsset() {
String json;
try {
InputStream is = getApplication().getApplicationContext().getAssets().open("quizzes.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
return json;
}