访问json数组中的json数组

时间:2017-07-14 04:45:24

标签: java json

我试图在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;如果有人提出如何继续进行或改变我的想法将会非常有用应该做。

3 个答案:

答案 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);
    }
  }
}