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

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

將字符串值傳遞給 Java 中的 Jackson 自定義反序列化器

將字符串值傳遞給 Java 中的 Jackson 自定義反序列化器

達令說 2022-07-20 20:18:27
我創(chuàng)建了一個 Jackson Custom Deserializer 來反序列化 JSON 字符串:public class TestMapper extends StdDeserializer<Test> {    public TestMapper() {        this(null);    }    public TestMapper(Class<?> vc) {        super(vc);    }    @Override    public Test deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {我想將“字符串參數(shù)”傳遞給我想在反序列化期間使用的反序列化方法。有沒有辦法做到這一點?我在我的代碼中調(diào)用解串器如下:new ObjectMapper().readValue(json, Test.class)測試類是:@JsonDeserialize(using = TestMapper.class)public class Test {
查看完整描述

1 回答

?
揚帆大魚

TA貢獻1799條經(jīng)驗 獲得超9個贊

您需要創(chuàng)建帶有額外參數(shù)的構造函數(shù),該參數(shù)將在反序列化期間使用:


import com.fasterxml.jackson.core.JsonParser;

import com.fasterxml.jackson.databind.DeserializationContext;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.fasterxml.jackson.databind.deser.std.StdDeserializer;

import com.fasterxml.jackson.databind.module.SimpleModule;


import java.io.IOException;


public class JsonApp {


    public static void main(String[] args) throws Exception {

        SimpleModule customModule = new SimpleModule();

        customModule.addDeserializer(Test.class, new TestMapper("Extra value!!!"));


        ObjectMapper mapper = new ObjectMapper();

        mapper.registerModule(customModule);


        Test test = new Test();

        test.setValue("Value");


        String json = mapper.writeValueAsString(test);

        System.out.println(json);

        System.out.println(mapper.readValue(json, Test.class));

    }

}


class TestMapper extends StdDeserializer<Test> {


    private String extraConfig;


    public TestMapper() {

        this(null);

    }


    public TestMapper(String extraConfig) {

        super(Test.class);

        this.extraConfig = extraConfig;

    }


    @Override

    public Test deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {

        Test test = new Test();

        test.setValue(extraConfig);


        return test;

    }

}


class Test {


    private String value;


    public String getValue() {

        return value;

    }


    public void setValue(String value) {

        this.value = value;

    }


    @Override

    public String toString() {

        return "Test{" +

                "value='" + value + '\'' +

                '}';

    }

}

上面的代碼打?。?/p>


{"value":"Value"}

Test{value='Extra value!!!'}

您應該始終提供給super constructor您POJO class的Test.class. 如果您需要更復雜的初始化,請查看ContextualDeserializer.


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號