第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在Jackson中使用自定義Serializer?

如何在Jackson中使用自定義Serializer?

ibeautiful 2019-07-24 19:11:57
如何在Jackson中使用自定義Serializer?我有兩個(gè)Java類,我想使用Jackson序列化為JSON:public class User {     public final int id;     public final String name;     public User(int id, String name) {         this.id = id;         this.name = name;     }}public class Item {     public final int id;     public final String itemNr;     public final User createdBy;     public Item(int id, String itemNr, User createdBy) {         this.id = id;         this.itemNr = itemNr;         this.createdBy = createdBy;     }}我想將Item序列化為此JSON:{"id":7, "itemNr":"TEST", "createdBy":3}用戶序列化只包括id。我還可以將所有用戶對(duì)象serilize為JSON,如:{"id":3, "name": "Jonas", "email": "jonas@example.com"}所以我想我需要編寫一個(gè)自定義序列化器Item并嘗試使用它:public class ItemSerializer extends JsonSerializer<Item> {@Overridepublic void serialize(Item value, JsonGenerator jgen,         SerializerProvider provider) throws IOException,         JsonProcessingException {     jgen.writeStartObject();     jgen.writeNumberField("id", value.id);     jgen.writeNumberField("itemNr", value.itemNr);     jgen.writeNumberField("createdBy", value.user.id);     jgen.writeEndObject();}}我使用Jackson How-to:Custom Serializers中的代碼序列化JSON 如何在Jackson中使用自定義Serializer?但我現(xiàn)在需要和杰克遜一起做,因?yàn)镚son不支持接口。
查看完整描述

3 回答

?
狐的傳說

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊

如上所述,@ JsonValue是一個(gè)好方法。但是如果你不介意自定義序列化程序,則不需要為Item編寫一個(gè),而是為User寫一個(gè) - 如果是這樣,它就像下面這樣簡(jiǎn)單:

public void serialize(Item value, JsonGenerator jgen,
    SerializerProvider provider) throws IOException,
    JsonProcessingException {
  jgen.writeNumber(id);}

另一種可能性是實(shí)施JsonSerializable,在這種情況下不需要注冊(cè)。

至于錯(cuò)誤; 這很奇怪 - 你可能想要升級(jí)到更高版本。但擴(kuò)展也更安全,org.codehaus.jackson.map.ser.SerializerBase因?yàn)樗鼘⒕哂蟹潜匾椒ǖ臉?biāo)準(zhǔn)實(shí)現(xiàn)(即除了實(shí)際的序列化調(diào)用之外的所有內(nèi)容)。


查看完整回答
反對(duì) 回復(fù) 2019-07-24
  • 3 回答
  • 0 關(guān)注
  • 1283 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)