亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 255 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號