我有一个包含对象数组的Json字符串:
{DateFormat :[{column: 0, pattern: "yyyyMMdd"},
{column: 2, pattern: "yyyyMMdd"} ]}
和我使用Spring MVC与Jackson解析器。
Java Pojo必须是什么样子,我才能把这个Json字符串自动解析成一个对象?
在Spring我通常这样做:
public @ResponseBody String login(@RequestBody DateFormat dataFormaPojo){
}
这适用于简单的Json字符串,但是我如何将对象数组解析为Java对象或包含对象的数组列表呢?2我希望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字符串?我没有得到错误消息。
编辑3:如果我在谷歌铬开发工具,我得到一个400坏请求消息,但在Spring,我没有得到错误消息,从Jackson,他不能解析我的数据到一个Pojo ...
4条答案
按热度按时间xyhw6mcr1#
您将需要一个类似以下的对象:
然后你的主要对象是:
控制器中的方法如下所示:
zsohkypk2#
删除成功后使用
notifydatasetchanged()
,或者从适配器创建一个示例,然后访问notifydatasetchanged()
。我希望这能解决您的问题h79rfbju3#
用户对象Map器获取具有相应json字符串的java类的对象
java docs for object mapper
以下示例可能对您有所帮助enter link description here
gkn4icbw4#
由于我没有足够的信誉来评论,更新的答案是@Garis M Suero。更新是使用注解@JsonProperty(“DataFormat”)的getter/setter方法。
您将需要一个类似以下的对象:
}
然后你的主要对象是:
公共类DateFormatList实现了可序列化{私有静态最终长序列版本UID = 2514719982327593095 L;
}