我试图解析我从limesurvey服务器到Java的Json响应,但是我不知道我应该创建什么类型的类。
这是我要解析为java对象的json字符串:
{"id":1,"result":{"gid":"1","type":"L","help":"Veuillez entrer votre niveau d'\u00e9tudes \u00e0 l'INPT.","language":"fr","sid":"796246","question_order":"3","question":"<p>\r\n\tvotre niveau d'\u00e9tudes \u00e0 l'INPT :<\/p>\r\n","answeroptions":{"A1":{"answer":"INE1","assessment_value":"0","scale_id":"0"},"A2":{"answer":"INE2","assessment_value":"1","scale_id":"0"},"A3":{"answer":"INE3","assessment_value":"1","scale_id":"0"}}},"error":null}
为了解析它,我创建了以下类:
public class Answer
{
String answer;
int assessment_value;
int scale_id;
@Override
public String toString() {
return "answer : "+answer + " - assessment_value : " + assessment_value + " - scale_id :" + scale_id;
}
}
public class answerOptions
{
String a;
Answer t;
}
public class QuestionProperties
{
int gid;
String type;
String help;
String language;
int sid;
int question_order;
String question;
ArrayList<answerOptions> answeroptions;
@Override
public String toString() {
return "gid : "+gid + " - type : " + type + " - help :" + help + " - language :" + language + " - sid :" + sid + " - question_order :" + question_order + " - question :" + question;
}
}
public class getQuestionProperties
{
int id;
QuestionProperties result;
String error;
@Override
public String toString() {
return "id : "+id + " - result : " + result + " - error :" + error;
}
}
我遇到的问题是我宣布了#34; answeroptions&#34;作为一个阵列,虽然它不是,但是我不能确定那里的选项数量,我尝试了一个类似一对的类,但它没有工作?关于如何在不失去一般性的情况下建模这个问题的任何想法,因为我想要一个方法来自动解析这个选项的数量!!
答案 0 :(得分:0)
你几乎做得很好。只需根据JSON字符串将其更改为Map<String,Answer>
而不是ArrayList<answerOptions>
。这里&#34; A1&#34;,&#34; A2&#34;和&#34; A3&#34;是地图的关键。
样品:
class QuestionProperties {
...
Map<String,Answer> answeroptions;
}
在JSON String中包含在
中的任何内容 {...}
已转换为Map
或自定义POJO
类对象
[...]
已转换为ArrayList
注意:遵循类名的Java命名约定。通过制作private
并使用正确的getter / setter方法封装所有变量。