当前位置: 首页 > 面试题库 >

将嵌套的Java对象转换为Jackson JSON

闾丘玮
2023-03-14
问题内容

有人可以提供一个示例或参考,该示例或参考提供一种使用Jackson库将嵌套JAVA对象转换为JSON输出的方法的方法。我没有转换平面JAVA对象的问题。但是,JSON库显示嵌套的对象名称和类型,而不是其子对象。我几乎可以利用此处提供的相同代码http://www.mkyong.com/java/jackson-2-convert-
java-object-to-from-json/
。因此,我没有附加任何代码示例。

例如

这是我得到的:

{
  "fname": null,
  "lname": null,
  "addr": null
}

这是我需要的输出:

{
    "name":null,
    "lname":null,
    "addr":{
        street:"mull",
        "city":null,
        "zip":0
    }
}

这是示例类对象:

import address;

public class id implements Serializable {
public String fname;
public String lname;
public address addr;

}

public class address implements Serializable {
public String street;
public String city; 
public int zip;
}

问题答案:

创建一个类地址。

public class Address {
    private String street;
    private String city; 
    private int zip;
    public String getStreet() {
        return street;
    }
    public void setStreet(String street) {
        this.street = street;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public int getZip() {
        return zip;
    }
    public void setZip(int zip) {
        this.zip = zip;
    }
}

创建一个类别ID。

 public class Id {
    private String fname;
    private String lname;
    private Address addr;
    public String getFname() {
        return fname;
    }
    public void setFname(String fname) {
        this.fname = fname;
    }
    public String getLname() {
        return lname;
    }
    public void setLname(String lname) {
        this.lname = lname;
    }
    public Address getAddr() {
        return addr;
    }
    public void setAddr(Address addr) {
        this.addr = addr;
    }
}

主要方法:

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Test {
    public static void main(String[] args) {
        Address addressObj = new Address();
        addressObj.setCity("Chicago");
        addressObj.setStreet("Some Street");
        addressObj.setZip(12345);

        Id idObj = new Id();
        idObj.setAddr(addressObj);
        idObj.setFname("Test");
        idObj.setLname("Tester");

        ObjectMapper mapper = new ObjectMapper();

        //Object to JSON in String
        try {
            String jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(idObj);
            System.out.println(jsonInString);
        } catch (JsonProcessingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }       
    }
}

输出:

{
  "fname" : "Test",
  "lname" : "Tester",
  "addr" : {
    "street" : "Some Street",
    "city" : "Chicago",
    "zip" : 12345
  }
}


 类似资料:
  • 问题内容: 我正在寻找一种优雅的方式来获取数据,该数据使用具有一些嵌套dict和列表(例如javascript样式对象语法)的dict进行属性访问。 例如: 应该以这种方式访问​​: 我认为,没有递归是不可能的,但是获得字典对象样式的一种好方法是什么? 问题答案: 更新:在Python 2.6及更高版本中,请考虑namedtuple数据结构是否满足你的需求: 备选方案(原始答案内容)为: 然后,你

  • 当我试图使用ModelMapper将嵌套的java对象转换为嵌套的DTO时,我遇到了一个问题。在父DTO对象中,子DTO为null。以下是代码片段。 实体类: DTO的课程: 这是映射器代码: 输出: 输出用户DTO:UserDTO[名称=xyz,地址=null,产品=null] 在这里,我想将用户实体转换为UserDTO-dto。我得到了地址和产品DTO的空值。我在这里到底缺少什么?有人知道吗?

  • 问题内容: 我在Postgres中有一个包含此数据的表,并且很难将其转换为JSON对象。 我该如何转换呢? 任何建议都会有所帮助。谢谢 问题答案: 使用(https://www.postgresql.org/docs/current/static/queries- with.html )和JSON函数(https://www.postgresql.org/docs/current/static/f

  • 问题内容: 我正在使用JAXB将json转换为java对象。我面临的问题是,它导致我创建了大量的类,这些类除了充当json标签的占位符外没有其他用途。 例如:在json下面考虑: } 现在要将这个JSON原样反序列化为java对象,这些是我需要创建的java类: 因此,总共有9个类可以模仿JSON,并且如果我们研究这些类的角色,它们不过是JSON标签的占位符。有什么简单的方法吗? 问题答案: 您可

  • 我有一个嵌套的JSON对象,如下所示: 我想将其转换为: 我如何使用JOLT实现这一点?感谢您的参与。

  • 我正在尝试将来自我的数据库的对象的平面数组转换为需要嵌套结构才能管理可扩展子行的react-table。 我已经制作了一个代码沙盒,它非常简单: https://codesandbox.io/s/tender-chatterjee-kdssi?file=/src/App.js 基本上,我的原始数据结构如下: 我想把它转换成这个结构: 我已经尝试了一些递归的方法,但是他们留下了一些选择,所以我很乐意