Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多维地图_Java_Android_Arrays_Dictionary_Multidimensional Array - Fatal编程技术网

Java 多维地图

Java 多维地图,java,android,arrays,dictionary,multidimensional-array,Java,Android,Arrays,Dictionary,Multidimensional Array,我正在大学编写一个Android应用程序 用户被问及他们必须回答的问题 我通过HTTP请求/响应从服务器获取问题。它们以字符串的形式传递。此字符串类似于此,有两个问题: (requestedQuestion): id: 1 question: Mit was stylet man HTML? answer1: PHP answer2: C++ answer3: Java answer4: CSS answerR: 4 pictur

我正在大学编写一个Android应用程序

用户被问及他们必须回答的问题

我通过HTTP请求/响应从服务器获取问题。它们以字符串的形式传递。此字符串类似于此,有两个问题:

(requestedQuestion):

    id: 1
    question: Mit was stylet man HTML?
    answer1: PHP
    answer2: C++
    answer3: Java
    answer4: CSS
    answerR: 4
    picture:
    kind: 4
    category: Webprogrammierung
    semester: 2
    difficulty: 1
    ranking:
    report:
    moderated:
    id: 2
    question: Wie viele Bits hat ein Byte?
    answer1: 4
    answer2: 8
    answer3:
    answer4:
    answerR: 2
    picture:
    kind: 2
    category: Informatik
    semester: 1
    difficulty: 2
    ranking:
    report:
    moderated:
我想把字符串放到多维映射中,以便更好地访问每个属性

目前,我们有一个简单的贴图生成器,可以生成法线贴图,但这不正常:

HashMap<String, String> map = new HashMap();
  String payload = requestedQuestion;
  String[] keyVals = payload.split("\\s*\n");
  for(String keyVal:keyVals) {
    String[] parts = keyVal.split(":", 2);
    map.put(parts[0],parts[1]);
  }

从服务器提供
JSON
答案更自然:

{ 
    "id": 1,
    "question": "Mit was stylet man HTML?",
    "answers" : [ 
        { "value": "PHP" },
        { "value" : "C++"}, 
        { "value" : "Java"},
        { "value" : "CSS"}
    ],
    "rightAnswer": 4,
    "kind": 4,
    "category": "Webprogrammierung",
    "semester": 2,
    "difficulty": 1
}
有关
JSON
的更多信息,请参阅

然后在
Android
中,您可以使用或其他库解析
JSON
响应

您需要创建POJO对象并使用
GSON
注释映射它们。这是我前面提供的
JSON
对象的示例:

问题:

public class Question {

    @SerializedName("id")
    @Expose
    private Integer id;
    @SerializedName("question")
    @Expose
    private String question;
    @SerializedName("answers")
    @Expose
    private List<Answer> answers = null;
    @SerializedName("rightAnswer")
    @Expose
    private Integer rightAnswer;
    @SerializedName("kind")
    @Expose
    private Integer kind;
    @SerializedName("category")
    @Expose
    private String category;
    @SerializedName("semester")
    @Expose
    private Integer semester;
    @SerializedName("difficulty")
    @Expose
    private Integer difficulty;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getQuestion() {
        return question;
    }

    public void setQuestion(String question) {
        this.question = question;
    }

    public List<Answer> getAnswers() {
        return answers;
    }

    public void setAnswers(List<Answer> answers) {
        this.answers = answers;
    }

    public Integer getRightAnswer() {
        return rightAnswer;
    }

    public void setRightAnswer(Integer rightAnswer) {
        this.rightAnswer = rightAnswer;
    }

    public Integer getKind() {
        return kind;
    }

    public void setKind(Integer kind) {
        this.kind = kind;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public Integer getSemester() {
        return semester;
    }

    public void setSemester(Integer semester) {
        this.semester = semester;
    }

    public Integer getDifficulty() {
        return difficulty;
    }

    public void setDifficulty(Integer difficulty) {
        this.difficulty = difficulty;
    }
}
假设您以
String
格式获得响应,并将其存储在
response
变量中

String response; // store here response of your server request
然后只需使用
GSON
解析该
字符串

Gson gson = new Gson();
Qustion question = gson.fromJson(response, Question.class);
现在您有了
问题
对象。您可以用另一种方式访问字段

List<Answer> answers = quesion.getAnswers();
List answers=quesion.getAnswers();

您的Json响应有效吗?太好了!但是如何处理这个问题呢?如何将多个问题用于Android中的其他活动?
Gson gson = new Gson();
Qustion question = gson.fromJson(response, Question.class);
List<Answer> answers = quesion.getAnswers();