0

Gson を使用して JSON データを POJO に変換しているときに、このエラーが発生します。

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: BEGIN_ARRAY が必要でしたが、1 行目の列 119 で STRING でした

私のJSONは:

{  
   "success":true,      
   "result":[  
      {  
         "htmlId":"edit_text_1",
         "value":"3",
         "contentType":"Snippet"
      },
      {  
         "htmlId":"edit_text_2",
         "value":[  
            {  
               "type":"HTML",
               "value":"<ul>\n<li>This is a text from the static editable content.</li>\n</ul>"
            },
            {  
               "type":"Text",
               "value":"- This is a text from the static editable content."
            }             ],
         "contentType":"Text"
      }
   ]
}

結果ごとに値の型が異なる場合があります。文字列値または配列の場合もあります。

結果の私のポジョは次のとおりです。

    private String htmlId;  
    private Object value = new ArrayList<Object>();
    private String contentType;

    public String getHtmlId() {
        return htmlId;
    }
    public void setHtmlId(String htmlId) {
        this.htmlId = htmlId;
    }
    public Object getValue() {
        return value;
    }

    public void setValue(Object value) {
        if(value instanceof String)
        this.value = (List<String>)value;
    else if(value instanceof ArrayList)
        this.value = (ArrayList<MarketoTypeValue>)value;
    }

    public String getContentType() {
        return contentType;
    }
    public void setContentType(String contentType) {
        this.contentType = contentType;
    }

結果にスニペット タイプがない場合、私のコードは正常に動作します。タイプキャストで試してみましたが、それも役に立ちませんでした。

そのようなシナリオを処理する最善の方法は何ですか?

4

1 に答える 1