解析JSON阵列与Spring和杰克逊POJO?(Parse Json Array to Pojo

2019-10-19 20:05发布

我有此JSON字符串与对象数组:

{DateFormat :[{column: 0, pattern: "yyyyMMdd"},
              {column: 2, pattern: "yyyyMMdd"} ]}

我的用户的Spring MVC与杰克逊解析器..

必须如何在Java POJO的样子,我可以全自动分析此JSON字符串到对象?

在春天,我做它通常是这样的:

public @ResponseBody String login(@RequestBody DateFormat dataFormaPojo){

}

这适用于一个简单的JSON字符串,但我怎么能解析我的对象数组到Java对象,或者与它的对象一个ArrayList? 我想的是,杰克逊解析器处理这种全自动如果临危JSON文件。

编辑:我已经扩展了JSON文件一点点的创建此Java类,但它didn`t工作:

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字符串,我GETT看起来是这样的:

{
    "DataFormat": [
        {
            "column": 0,
            "type": "number"
        },
        {
            "column": 1,
            "type": "number"
        },
        {
            "column": 2,
            "type": "number"
        },
        {
            "column": 3,
            "type": "number"
        }
    ]
}

我能与杰克逊的对象设置自定义的名字,如果我想的是,该对象DataFormat有一个其他的名字?

?为什么我的课没有解析JSON字符串? 我没有错误消息。

EDIT3:如果我在GOOLGE Chrome浏览器开发工具看,我收到了400错误的请求的消息,但在春天,我得到杰克逊没有错误消息,他不能解析我的数据到一个POJO ..

Answer 1:

你需要像一个对象:

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){
    ....
}


Answer 2:

只要使用notifydatasetchanged()删除成功完成后,或只是做一个实例从您的适配器,然后访问notifydatasetchanged()我希望这将解决您的问题



Answer 3:

用户对象映射器来获得Java类的对象,具有相应的JSON字符串

Java文档为对象映射器

我这里是可以帮助您 在此处输入链接的描述



文章来源: Parse Json Array to Pojo with Spring and Jackson?