我有这个带有对象数组的 Json 字符串:
{DateFormat :[{column: 0, pattern: "yyyyMMdd"},
{column: 2, pattern: "yyyyMMdd"} ]}
我使用 Spring MVC 和 Jackson Parser..
Java Pojo 必须是什么样子才能自动将此 Json 字符串解析为对象?
在 Spring 我通常这样做:
public @ResponseBody String login(@RequestBody DateFormat dataFormaPojo){
}
这适用于简单的 Json 字符串,但我如何将对象数组解析为 Java 对象或其中包含对象的 ArrayList?我希望 Jackson 解析器在收到 json 文件时自动处理此问题。
编辑:我稍微扩展了 json 文件并创建了这个 java 类,但它不起作用:
import java.io.Serializable;
public class DataFormat implements Serializable
{
private static
final long serialVersionUID = 1L;
private Integer column;
private String type;
private String pattern;
public Integer getColumn()
{
return column;
}
public void setColumn(Integer column)
{
this.column = column;
}
public String getType()
{
return type;
}
public void setType(String type)
{
this.type = type;
}
public String getPattern()
{
return pattern;
}
public void setPattern(String pattern)
{
this.pattern = pattern;
}
}
和 DataFormList 类
import java.io.Serializable;
import java.util.ArrayList;
import
java.util.List;
public class DataFormatList implements Serializable
{
private static final long serialVersionUID = 2514719982327593095L;
private List<DataFormat> DataFormat = new ArrayList<DataFormat> ();
public List<DataFormat> getDateFormats()
{
return DataFormat;
}
public void setDateFormats(List<DataFormat> formats)
{
this.DataFormat= formats;
}
}
在 Spring :
@RequestMapping(value="/save",method=
{
RequestMethod.GET,RequestMethod.POST
}
)
public @ResponseBody String createDataSource( @RequestBody DataFormatList dataFormaPojo)
{
for(DataFormat df: dataFormaPojo.getDateFormats())
{
System.out.println(df.getType());
}
return "";
}
我得到的 Json 字符串如下所示:
{
"DataFormat": [
{
"column": 0,
"type": "number"
},
{
"column": 1,
"type": "number"
},
{
"column": 2,
"type": "number"
},
{
"column": 3,
"type": "number"
}
]
}
如果我希望对象 DataFormat
有其他名称,我可以使用 Jackson 为对象设置自定义名称吗?
为什么我的类没有解析 json 字符串?我没有收到错误消息。
EDIT3:如果我查看 goolge chrome 开发工具,我会收到 400 Bad Request Message,但在 Spring 中,我没有收到来自 Jackson 的错误消息,他无法将我的数据解析为 Pojo..
最佳答案
您将需要一个像这样的对象:
public class DateFormat implements Serializable {
private static final long serialVersionUID = 1L;
private int column;
private String pattern;
public String getPattern() {
return name;
}
public void setPattern(String pattern) {
this.pattern = pattern;
}
public int getColumn() {
return name;
}
public void setColumn(String column) {
this.column = column;
}
}
然后你的主要对象如下:
public class DateFormatList implements Serializable {
private static final long serialVersionUID = 2514719982327593095L;
private List<DateFormat> dateFormats = new ArrayList<DateFormat>();
public List<DateFormat> getDateFormats() {
return name;
}
public void setDateFormats(List<DateFormat> formats) {
this.dateFormats= formats;
}
}
Controller 中的方法如下所示:
public @ResponseBody String login(@RequestBody DateFormatList dataFormaPojo){
....
}
关于java - 使用 Spring 和 Jackson 将 Json 数组解析为 Pojo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22993174/