java - 使用jackson将Json对象转换为java对象

标签 java json jackson

我有以下 json 数据

{"id":10606,
 "name":"ProgrammerTitle",
 "objectMap":{"programme-title":"TestProgramme","working-title":"TestProgramme"}
}

我想将这些数据设置到我的 pojo 对象中

public class TestObject {
    private Long id;
    private String name;

    @JsonProperty("programme-title")
    private String programmeTitle;

    @JsonProperty("working-title")
    private String workingTitle;
}

在这里,我可以在我的测试对象中设置 ID 和名称,但对于对象映射,我无法设置数据。

所以我为 ObjectMap 创建了更多类,其中包含 programmeTitle 和 workingTitle 这工作正常但我不能将这些字段直接设置到我的 pojo 对象 这可以设置吗?

我正在使用 Jackson Object Mapper 来转换 json 数据。

如果我在我的 pojo 中创建另一个 java 对象,它工作正常:

public class TestObject {
private Long id;
private String name;

@JsonProperty("objectMap")
private ObjectMap objectMap;

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public ObjectMap getObjectMap() {
    return objectMap;
}

public void setObjectMap(ObjectMap objectMap) {
    this.objectMap = objectMap;
}

public class ObjectMap {

@JsonProperty("programme-title")
private String programmeTitle;

@JsonProperty("working-title")
private String workingTitle;

public String getProgrammeTitle() {
    return programmeTitle;
}

public void setProgrammeTitle(String programmeTitle) {
    this.programmeTitle = programmeTitle;
}

public String getWorkingTitle() {
    return workingTitle;
}

public void setWorkingTitle(String workingTitle) {
    this.workingTitle = workingTitle;
}

最佳答案

如果你的JSON是这样的

{"id":10606,
  "name":"ProgrammerTitle",
  "objectMap":{"programme-title":"TestProgramme","working-title":"TestProgramme"}
}

然后你可以像这样写你的对象映射器类..

public class Program{

    public static class ObjectMap{
     private String programme_title, working_title;

      public String getprogramme_title() { return programme_title; }
     public String getworking_title() { return working_title; }

     public void setprogramme_title(String s) { programme_title= s; }
     public void setworking_title(String s) { working_title= s; }
   }

   private ObjectMap objMap;

   private String name;

   public ObjectMap getobjectMap () { return objMap; }
   public void setObjectMap  (ObjectMap n) { objMap= n; }

   private Long id;
   public Long getId() {return id;}
   public void setId(Long id) {this.id = id;}

   private String name;
   public String getName() {return name;}
   public void setName(String name) {this.name = name;}
  }

请引用这个check it

关于java - 使用jackson将Json对象转换为java对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19109719/

相关文章:

java - JFrame 和可见性 : issue with fading out and getting a screenshot

java - 是否可以使用静音按钮作为编程的输入?

java - Tomcat 中的 TeamCity 部署

java - 使用Gson序列化公开字段时如何更改字段名称?

java - 将 Json 日期转换为 java 日期

spring - com.fasterxml.jackson.databind.exc.MismatchedInputException : Unexpected token

java - 夏令时的 plusHours 和 plusDays 之间的 JodaTime 差异

c# - 将 JSON 对象和对象列表传递给 ASP.Net Controller

java - 有没有办法制作 "generic"json 对象?

java - 类型 'com/fasterxml/jackson/datatype/jdk8/Jdk8Module'(当前帧,堆栈 [2])不可分配给 'com/fasterxml/jackson/databind/Module'