【发布时间】:2019-04-03 16:04:17
【问题描述】:
当然已经有人问过了,但我无法为我的案例搜索解决方案。
我有两个 JSON 文件:quizzes.json 和 quizzesQuestions.json。
第一个只有每个测验的标题和 ID,第二个包含每个测验所需的所有数据。
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 文件中检索一个对象(现在,它将成为未来的数据库),它等于特定的 id。这里只有一个 id 为 1 的测验。
我已经能够使用Gson 从第一个文件中检索每个测验并将它们显示在列表中。现在我希望能够只检索与用户单击的 id 相同但我不知道如何继续的测验。
这是我的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;
}
【问题讨论】:
-
而不是将元素添加到列表中 - 为什么不考虑将它们放在地图中,您可以在其中通过键值(即测验 id)查找?
标签: java android json gson json-deserialization