我试图在JSON的帮助下构建测验游戏。在我的第一个问题中,我只是因为我第一次使用JSON而面临问题。
JSON文件是:
"Question1": [{
"name": "here will be first question ",
"answer":"correct answer",
"wrongans" : [
"wronganswer optionA",
"wronganswer optionB",
"wronganswer optionC"
]
}],
接下来我将JSON解析为Java对象,因此我创建了一个方法:
public static void loadJsonLevels(String fileName, String ques) {
JsonValue jsonValue = new JsonReader().parse(Gdx.files.internal(fileName));
JsonValue nameValue = jsonValue.get("Question1");
if (ques.equals("Question1")) {
for (JsonValue value : nameValue.iterator()) {
question1.add(new QuestionBase());
question1.get(question1.size()-1).setQuesname(value.getString("name"));
question1.get(question1.size()-1).setCorrectAns(value.getString("answer"));
}
}
}
能够访问到这里,接下来我想访问"错误" ,存储在json中,即数组。我为QuestionBase创建了一个单独的类,它是
public class QuestionBase {
public String quesname;
public String correctAns;
public String[] wronganswers;
}
创建了QuestionBase类的对象,即
public static ArrayList<QuestionBase> question1 = new ArrayList<QuestionBase>();
这个question1
在方法loadJsonLevels()
中使用,发现难以访问&#34;错误的人#34;如果有人提出如何继续进行或改变我的想法将会非常有用应该做。
答案 0 :(得分:0)
您可以这样使用get String数组:
JsonValue stringValue=value.get("wrongans");
question1.get(question1.size()-1).setWronganswers(stringValue.asStringArray());
检查数组中的值:
for (String wrongAns:question1.get(question1.size()-1).getWronganswers())
System.out.println("WRONG ANS : "+wrongAns);
另一方面,您可以将问题保存在单独的.json
文件中,例如
<强> 1stQues.json 强>
{
"quesname": "here will be first question ",
"correctAns":"correct answer is what",
"wronganswers" : [
"wronganswer optionA",
"wronganswer optionB",
"wronganswer optionC"
]
}
然后从.json
文件
Json json=new Json();
QuestionBase questionBase=json.fromJson(QuestionBase.class,Gdx.files.internal("1stQues.json"));
for (String wrongAns:questionBase.getWronganswers())
System.out.println("Wrong ans in 1st ques : "+wrongAns);
答案 1 :(得分:0)
尝试使用Gson JSON Parser -
Gson gson = new Gson();
//Parse json into a YourJavaClass object.
YourJavaClass yourJavaClass= gson.fromJson(jsonResponse, YourJavaClass.class);
在这里你可以找到完整的例子 - &gt; Parsing objects in a json array with gson
答案 2 :(得分:0)
JSONArray jsonarray = json.getJSONObject("Question1");
if (jsonarray.length() != 0) {
for(int i = 0; i < jsonarray.length(); i++) {
content = jsonarray.getJsonObject(i).getString("name");
JSONArray jsonArray1 = jsonarray.getJSONArray("wronganswers");
for (int j = 0; j < jsonArray1.length(); j++) {
a1 = jsonArray1.getString(i);
}
}
}