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

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

當嵌套 JSON 中出現相同的字段名稱時,將 JSON 解析為 java 對象

當嵌套 JSON 中出現相同的字段名稱時,將 JSON 解析為 java 對象

白衣染霜花 2022-09-07 16:33:17
以下是我的JSON:{  "time":{    "date":{      "year":2017,      "month":3,      "day":12     },    "time":{      "hour":10,      "minute":42,      "second":42,      "nano":810000000     }   },"name":"Jon","message":{"product":"orange""price":2000}}“時間”字段有一個嵌套的“時間”字段。我如何使用杰克遜解析它到java對象。任何人都可以告訴我正確的方法嗎?
查看完整描述

3 回答

?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

您可以創建如下類:


class JavaObject {

    private TimeObject time;

    private String name;

    //other fields

    //getters and setters

}


class TimeObject {

    private Date date;

    private Time time;

    //getters and setters

}


class Date {

    private int year;

    private int month;

    private int day;

    //getters and setters

}


class Time {

    private int hour;

    private int minute;

    private int second;

    private long nano;

    //getters and setters

}

完成后,您可以使用 將 String 反序列化為對象,例如:JacksonjsonJavaObject


ObjectMapper objectMapper = new ObjectMapper();

JavaObject javaObject = objectMapper.readValue("{\n" + 

        "  \"time\":{\n" + 

        "    \"date\":{\n" + 

        "      \"year\":2017,\n" + 

        "      \"month\":3,\n" + 

        "      \"day\":12\n" + 

        "     },\n" + 

        "    \"time\":{\n" + 

        "      \"hour\":10,\n" + 

        "      \"minute\":42,\n" + 

        "      \"second\":42,\n" + 

        "      \"nano\":810000000\n" + 

        "     }\n" + 

        "   },\n" + 

        "\"name\":\"Jon\"}", JavaObject.class);

System.out.println(javaObject);


查看完整回答
反對 回復 2022-09-07
?
DIEA

TA貢獻1820條經驗 獲得超2個贊

如果你只需要內部對象,你可以用一種快速的方式做到這一點:time


// your POJO class

// (public fields sould be private with getter & setter, of course)


public class Pojo {

    public int hour;

    public int minute;

    public int second;

    public long nano;


    @Override

    public String toString() {

        return hour + ":" + minute + ":" + second + ":" + nano;

    }

}

然后:


//your json string

String jsonString = "{\"time\":{\"date\":{\"year\":2017,\"month\":3,\"day\":12},"

                + "\"time\":{\"hour\":10,\"minute\":42,\"second\":42,\"nano\":810000000}},"

                + "\"name\":\"Jon\",\"message\":{\"product\":\"orange\",\"price\":2000}}";


ObjectMapper mapper = new ObjectMapper();

JsonNode jsonRoot = mapper.readTree(jsonString); //parse string to JsonNode

Pojo pojo = mapper.treeToValue(jsonRoot.at("/time/time"), Pojo.class); //create Pojo instance from inner time object

System.out.println(pojo); //see if it worked

這打?。?/p>


10:42:42:810000000


查看完整回答
反對 回復 2022-09-07
?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

使用杰克遜庫


ObjectMapper jsonMapper= new ObjectMapper();

YourCorrespondingObject object = jsonMapper.readValue("your json as string...", YourCorrespondingObject.class);

首先構建對象,填充它并轉換為字符串更容易,以確保它等于現有字符串,例如:


String jsonInString = mapper.writeValueAsString(object);


查看完整回答
反對 回復 2022-09-07
  • 3 回答
  • 0 關注
  • 256 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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