将嵌套的Java对象转换为Jackson JSON [英] Convert nested java objects to Jackson JSON

查看:111
本文介绍了将嵌套的Java对象转换为Jackson JSON的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Could someone provide an example or reference that provides a way to convert a nest JAVA object to JSON output using Jackson libraries preferably. I have no problem converting a flat JAVA object. However the JSON libraries show the nested object name and type rather than its sub-objects. I'm pretty much leveraging the same code provided here http://www.mkyong.com/java/jackson-2-convert-java-object-to-from-json/ . So I'm not attaching any code example.

例如

// This is what I get
{
"fname":null,
"lname":null,
"addr":null
}


// This is what I need as output
{
"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
  }
}

这篇关于将嵌套的Java对象转换为Jackson JSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆