Java 使用Spring和Jackson将Json数组解析为Pojo?

Java 使用Spring和Jackson将Json数组解析为Pojo?,java,json,spring,jackson,pojo,Java,Json,Spring,Jackson,Pojo,我有一个包含对象数组的Json字符串: {DateFormat :[{column: 0, pattern: "yyyyMMdd"}, {column: 2, pattern: "yyyyMMdd"} ]} 我使用带有Jackson解析器的Spring MVC JavaPOJO看起来应该是什么样子,我可以自动将这个Json字符串解析为一个对象 在春天,我通常是这样做的: public @ResponseBody String login(@RequestBody D

我有一个包含对象数组的Json字符串:

{DateFormat :[{column: 0, pattern: "yyyyMMdd"},
              {column: 2, pattern: "yyyyMMdd"} ]}
我使用带有Jackson解析器的Spring MVC

JavaPOJO看起来应该是什么样子,我可以自动将这个Json字符串解析为一个对象

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

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

}
{
    "DataFormat": [
        {
            "column": 0,
            "type": "number"
        },
        {
            "column": 1,
            "type": "number"
        },
        {
            "column": 2,
            "type": "number"
        },
        {
            "column": 3,
            "type": "number"
        }
    ]
}
这适用于简单的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;
    }
}
我得到的Json字符串如下所示:

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

}
{
    "DataFormat": [
        {
            "column": 0,
            "type": "number"
        },
        {
            "column": 1,
            "type": "number"
        },
        {
            "column": 2,
            "type": "number"
        },
        {
            "column": 3,
            "type": "number"
        }
    ]
}
如果希望对象数据格式具有其他名称,我可以使用Jackson为对象设置自定义名称吗

为什么我的类没有解析json字符串?我没有收到错误信息


EDIT3:如果我查看goolge chrome开发工具,我会收到400条错误请求消息,但在春季,我没有收到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;
    }
}
然后你的主要目标是:

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;
    }
}
成功完成删除后,只需使用notifydatasetchanged即可 或者从适配器创建一个实例,然后访问notifydatasetchanged
我希望这将解决您的问题

用户对象映射器使用相应的json字符串获取java类的对象

下面是一个可能对您有所帮助的示例

我创建了一个类似于您的类,只是做了一些小小的修改,但我的json字符串没有被解析,并且没有收到任何错误消息。。我怎样才能知道jackson想要哪种格式?我已经在我的第一篇文章中添加了新代码。好了,现在我只在getter上添加了一个@JsonPropertyDataFormat,现在它工作了:谢谢你的帮助