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
不是我返回的唯一值。还有Booleans
和String
我省略了
我通过添加一个空值的隐藏字段来解决这个问题。这不是一个非常优雅的解决方案,应该是一个更好的方法,但它有效
<input type="hidden" name="someField" value="">
我正在序列化一个表单并像这样返回 JSON
var dataForm = JSON.stringify($('#form').serializeObject());
然后在我的操作中 class 我使用 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 数组并正确映射到模型 class
例如
{"someField":["someValue1", "someValue2"]}
问题是当只有一个复选框被选中时 json 将看起来像这样
{"someField":"someValue1"}
这将生成以下异常,因为它需要一个数组而不是 String
Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING
有什么解决办法吗? someField
不是我返回的唯一值。还有Booleans
和String
我省略了
我通过添加一个空值的隐藏字段来解决这个问题。这不是一个非常优雅的解决方案,应该是一个更好的方法,但它有效
<input type="hidden" name="someField" value="">