Return 数组而不是来自 JSON 的字符串

Return Array instead of String from JSON

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

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

然后在我的操作中 class 我使用 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 数组并正确映射到模型 class

例如

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

问题是当只有一个复选框被选中时 json 将看起来像这样

{"someField":"someValue1"}

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

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

有什么解决办法吗? someField 不是我返回的唯一值。还有BooleansString我省略了

我通过添加一个空值的隐藏字段来解决这个问题。这不是一个非常优雅的解决方案,应该是一个更好的方法,但它有效

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