Java 多维地图
我正在大学编写一个Android应用程序 用户被问及他们必须回答的问题 我通过HTTP请求/响应从服务器获取问题。它们以字符串的形式传递。此字符串类似于此,有两个问题: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
(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();