为了账号安全,请及时绑定邮箱和手机立即绑定

java - 将复杂的 java 对象转换为 json

java - 将复杂的 java 对象转换为 json

开心每一天1111 2022-06-30 10:59:38
我有一个像下面这样的课-public class Person {       private String firstName;    private String lastname;    private Address address;   // getters and setters}public class Address {    private String streetName;    private String postCode;    private Contact contact;   // getters and setters}public class Contact {    private String telephone;    private String email;   // getters and setters}我正在使用这样的 gson 库将其转换为 json 对象-Gson gson = new GsonBuilder()                    .serializeNulls()                    .setPrettyPrinting()                    .create();        System.out.println(gson.toJson(new Person()));然后我得到 json 喜欢-{  "firstName": null,  "lastname": null,  "address": null}但我正在寻找一个像 -{  "firstName": null,  "lastname": null,  "address": {      "streetName": null,      "postCode": null,      "contact": {         "telephone": null,         "email": null       }   }}有人可以帮我实现这一目标吗?
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

我认为您获得的结果 JSON 是预期的:new Person().address字段为 null(如果您不在Person的构造函数中对其进行初始化),因此将其序列化为null.


您正在搜索的输出对应于类似的序列化


Person p = new Person();

Address a = new Address();

a.setContact(new Contact());

p.setAddress(a);

gson.toJson(p);

这是一个Person不同于new Person()...的实例


查看完整回答
反对 回复 2022-06-30
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

只需将您的 Person 类更改为


public class Person {   

    private String firstName;

    private String lastname;

    private Address address;


    public Person() {

        this(new Address());

    }


    public Person(Address address) {

        this.address = address;

    }


    // getters and setters

}

否则没有地址,因此JSON 中的null


查看完整回答
反对 回复 2022-06-30
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

您应该将地址作为对象添加到您的人员类中,而不是为空。


修改您的代码 - 将构造函数添加到 Person 以地址对象作为参数


  public class Person {

        private String firstName;

        private String lastname;

        private Address address;


        public Person(Address address) {

            this.address=address;

        }


        // getters and setters

    }

然后用这个替换打印行:


System.out.println(gson.toJson(new Person(new Address())));


查看完整回答
反对 回复 2022-06-30
  • 3 回答
  • 0 关注
  • 281 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号