我有一个Json String和一个对象数组:
{DateFormat :[{column: 0, pattern: "yyyyMMdd"},
{column: 2, pattern: "yyyyMMdd"} ]}
我和Jackson Parser一起使用Spring MVC ..
Java Pojo看起来如何能够将这个Json String自动解析为Object?
在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;
}
}
在春天:
@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 dev工具,我会收到400 Bad Request Message但是在Spring中我没有收到错误来自Jackson的消息,他无法将我的数据解析为Pojo ..
答案 0 :(得分:0)
你需要一个像这样的对象:
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;
}
}
控制器中的方法如下所示:
public @ResponseBody String login(@RequestBody DateFormatList dataFormaPojo){
....
}
答案 1 :(得分:0)
删除成功完成后,只需使用notifydatasetchanged()
即可
或者只是从适配器创建一个实例,然后访问notifydatasetchanged()
我希望这能解决你的问题
答案 2 :(得分:0)
用户对象映射器,用于获取具有相应json字符串
的java类的对象这里的示例可能会帮助您 enter link description here