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.
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:
65bee5661098cSaya 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);
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; } }
Atas ialah kandungan terperinci Objek JsonNullable sentiasa mempunyai nilai isPresent = benar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!