我正在序列化一个表单并像这样返回JSON
var dataForm = JSON.stringify($('#form').serializeObject());
然后在我的动作类中,我使用gson.fromJson()
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
并不是我回归的唯一价值。我省略了Booleans
和String
答案 0 :(得分:0)
我通过添加一个空值的隐藏字段来修复此问题。它不是一个非常优雅的解决方案,应该是更好的方式,但它可以工作
<input type="hidden" name="someField" value="">