【发布时间】:2015-05-19 12:28:52
【问题描述】:
我正在序列化一个表单并像这样返回 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 不是我返回的唯一值。还有Booleans和Strings我省略了
【问题讨论】:
-
试试 - var dataForm = JSON.stringify([$('#form').serializeObject()]);
-
还有其他应该是字符串的值被返回
-
所以如果它有一个键=>值它需要是一个数组对吗?不然就好了?
-
没错。它是pojo上的一个数组
-
汤姆,这怎么和其他问题重复了?
标签: java javascript arrays json gson