如何在Java中解析此JSON?

时间:2018-07-02 06:59:14

标签: java android json

我目前正在为android开发一个测试应用程序,需要解析JSON测试数据。

JSON如下:

{"id":1,"name":"Test Test","questions":[{"id":1,"test":1,"text":"Kannst du diese Frage beantworten?","answers":[{"id":1,"question":1,"text":"Ja, das ist richtig.","correct":1},{"id":2,"question":1,"text":"Diese Antwort ist falsch.","correct":0},{"id":3,"question":1,"text":"Diese hier ist ebenfalls nicht so ganz korrekt.","correct":0}]},{"id":2,"test":1,"text":"Diese Frage hier ist nicht korrekt.","answers":[{"id":4,"question":2,"text":"Ich glaube dir nicht, das hier ist eh richtig.","correct":1},{"id":5,"question":2,"text":"Diese Antwort ist falsch.","correct":0},{"id":6,"question":2,"text":"Diese hier ist ebenfalls nicht so ganz korrekt.","correct":0}]}]}

我需要提取问题及其子数据。

我尝试的是:

JSONObject jObject = new JSONObject(result);
String test = jObject.getJSONObject("id").getJSONArray("questions").toString();

String myString = jObject .getJSONObject("questions").getJSONObject("answers").getString("text");

3 个答案:

答案 0 :(得分:0)

像这样解析您的数据:

public class DataModel {
    int id;
    String name;
    ArrayList<Question> questions = new ArrayList<>();


    public class Question {
        int id;
        int test;
        String text;
        ArrayList<Answers> answers = new ArrayList<>();
    }

    public class Answers {
        int id;
        int question;
        String text;
        int correct;
    }


    public DataModel parseResponce(JSONObject response) {
        id = response.optInt("id");
        name = response.optString("name");
        JSONArray array = response.optJSONArray("questions");
        parseQuestion(array);
        return this;
    }


    public void parseQuestion(JSONArray questions) {
        for (int i = 0; i < questions.length(); i++) {
            JSONObject object = questions.optJSONObject(i);
            Question question = new Question();
            question.id = object.optInt("id");
            question.test = object.optInt("test");
            question.text = object.optString("text");
            JSONArray array = object.optJSONArray("answers");
            for (int j = 0; j < array.length(); j++) {
                JSONObject answer = questions.optJSONObject(i);
                Answers ans = new Answers();
                ans.id = answer.optInt("id");
                ans.question = answer.optInt("question");
                ans.text = answer.optString("text");
                ans.correct = answer.optInt("correct");
                question.answers.add(ans);
            }
            this.questions.add(question);
        }
    }
}

只需调用parseResponce(JSONObject response)方法并将您的响应传递给您,您将在DataModel对象内部获得问题和答案;

答案 1 :(得分:0)

attributes

答案 2 :(得分:0)

尝试一下

        try
        {
            String id = response.getString("id");
            String name = response.getString("name");
            JSONArray questionsArray = response.getJSONArray("questions");
            for(int i = 0; i <questionsArray.length(); i++)
            {
                JSONObject jsonObject = questionsArray.getJSONObject(i);
                String sid = jsonObject.getString("id");
                String stest = jsonObject.getString("test");
                String stext = jsonObject.getString("text");
                JSONArray answersArray = jsonObject.getJSONArray("answers");
                for(int j=0; j<answersArray.length(); j++)
                {
                    JSONObject jsonObjectAns = answersArray.getJSONObject(j);
                    String sidAns = jsonObject.getString("id");
                    String stextquestion = jsonObject.getString("question");
                    String stextAns = jsonObject.getString("text");
                    String scorrectAns = jsonObject.getString("correct");
                }
            }

        } catch (JSONException e)
        {
            e.printStackTrace();
        }