从JSON返回Array而不是String

时间:2015-05-19 12:28:52

标签: java javascript arrays json gson

我正在序列化一个表单并像这样返回JSON

var dataForm = JSON.stringify($('#form').serializeObject());

然后在我的动作类中,我使用gson.fromJson()

创建一个JSON模型对象

SomeObj so = gson.fromJson(dataForm, SomeObj.class);

SomeObj我有String数组字段

public class SomeObj {
    private String[] someField;

    public String[] getSomeField() {
        return this.someField;
    }
    public void setSomeField(String[] someField) {
        this.someField = someField;
    }
}

我有几个名为someField的复选框。当选择多个复选框时,将创建一个json数组并将其正确映射到模型类

所以例如

{"someField":["someValue1", "someValue2"]}

问题是当只选择了一个复选框时,json将如下所示

{"someField":"someValue1"}

这会生成以下异常,因为它需要一个数组而不是String

Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING

任何想法如何解决这个问题? someField并不是我回归的唯一价值。我省略了BooleansString

1 个答案:

答案 0 :(得分:0)

我通过添加一个空值的隐藏字段来修复此问题。它不是一个非常优雅的解决方案,应该是更好的方式,但它可以工作

<input type="hidden" name="someField" value="">