【问题标题】:Gson : parsing json string to java arraylist like modelingGson:将 json 字符串解析为 java 数组列表,如建模
【发布时间】:2014-08-08 14:15:28
【问题描述】:

我试图将我从我的 Limesurvey 服务器收到的 Json 响应解析为 Java,但是我看不到我应该创建什么类型的类。

这是我要解析成 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;
    }

}

我遇到的问题是我将“answeroptions”声明为一个数组,而它不是,但是我不能确定其中的选项数量,我尝试了一个类似于一对排序的类,但是它不工作?关于如何在不失去一般性的情况下对这个问题建模的任何想法,因为我想要一种方法来自动解析这个无论选项数量如何!!

【问题讨论】:

    标签: gson


    【解决方案1】:

    你几乎做得很好。只需根据 JSON 字符串将其更改为 Map&lt;String,Answer&gt; 而不是 ArrayList&lt;answerOptions&gt;。这里的“A1”、“A2”和“A3”是Map的key。

    样本:

    class QuestionProperties {
        ...
        Map<String,Answer> answeroptions;
    }
    

    在 JSON 字符串中包含任何内容

    {...} 转换为Map 或自定义POJO 类对象

    [...] 转换为ArrayList

    Learn more...关于 JSON 并关注此post

    注意:类名遵循 Java 命名约定。通过 private 封装所有变量并使用正确的 getter/setter 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多