Rumah > Java > Objek JsonNullable sentiasa mempunyai nilai isPresent = benar

Objek JsonNullable sentiasa mempunyai nilai isPresent = benar

PHPz
Lepaskan: 2024-02-08 22:42:27
ke hadapan
678 orang telah melayarinya

JsonNullable ialah objek yang biasa digunakan dalam PHP Ia sentiasa mempunyai ciri bahawa nilai isPresent adalah benar. Ini bermakna objek JsonNullable dianggap hadir tanpa mengira sama ada ia batal atau tidak. Editor PHP Xinyi akan meneroka kegunaan dan ciri objek JsonNullable dalam artikel berikut, dan menerangkan sebab nilai isPresentnya sentiasa benar. Dengan pemahaman yang mendalam tentang objek JsonNullable, kita boleh lebih memahami aplikasi dan kelebihannya dalam pembangunan PHP.

Kandungan soalan

Saya mempunyai fail dalam format json. Ia menyimpan objek json yang saya gunakan dalam ujian saya. Saya menggunakan objectmapper untuk menukar fail ini kepada objek dan ia ditukar dengan baik, tetapi terdapat masalah. Semua medan dalam objek mempunyai jenis pembungkus jsonnullabel. Masalahnya adalah seperti berikut - semua objek jsonnullabel, walaupun ia mengandungi nilai atribut null ispresent = true. Oleh itu, kaedah "orelse" dan "ispresent" tidak berfungsi dengan betul. saya dapat npe. Bagaimanakah saya boleh memastikan bahawa apabila menukar daripada rentetan atau fail json, medan ini sama dengan "palsu" jika terdapat nilai nol di dalamnya?

contoh json:

65bee5661098c

Saya telah mencuba konfigurasi ini untuk objectmapper: Konfigurasi pemeta objek:

ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.registerModule(new JavaTimeModule());
    objectMapper.registerModule(new Jdk8Module());
    objectMapper.registerModule(new JsonNullableModule());
    objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
    objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    objectMapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false);
Salin selepas log masuk

Penyelesaian

Cuba gunakan @jsondeserialize jackson anotasi pada ahli kelas yang boleh dibatalkan dalam json dan anda mahu nilainya menjadi "palsu" dan bukannya nol seperti ini:

public class MyJsonClass {
    @JsonDeserialize(using = CustomDeserializer.class)
    public String nullableMember;
}

public class CustomDeserializer
  extends StdDeserializer<String> {

    public CustomDeserializer() { 
        this(null); 
    } 

    public CustomDeserializer(Class<?> vc) { 
        super(vc); 
    }

    @Override
    public String deserialize(JsonParser jsonparser, DeserializationContext context) {
        String text = jsonparser.getText();
        if (null == text) {
          text = "false";
        }
        return text;
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Objek JsonNullable sentiasa mempunyai nilai isPresent = benar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan