ホームページ  >  記事  >  JsonNullable オブジェクトは常に isPresent 値 = true になります。

JsonNullable オブジェクトは常に isPresent 値 = true になります。

PHPz
PHPz転載
2024-02-08 22:42:27579ブラウズ

JsonNullable は PHP でよく使われるオブジェクトで、isPresent 値が常に true になるという特徴があります。これは、JsonNullable オブジェクトが null であるかどうかに関係なく、存在するとみなされることを意味します。 PHP エディターの Xinyi は、次の記事で JsonNullable オブジェクトの使用法と特性を調査し、その isPresent 値が常に true である理由を説明します。 JsonNullable オブジェクトを深く理解することで、PHP 開発におけるその用途と利点をより深く理解できるようになります。

質問内容

json形式のファイルがあります。テストで使用する json オブジェクトが保存されます。 objectmapper を使用してこのファイルをオブジェクトに変換したところ、問題なく変換されましたが、問題が発生しました。オブジェクト内のすべてのフィールドのラッパー タイプは jsonnullabel です。問題は次のとおりです。すべての jsonnullabel オブジェクトは、null 属性値が含まれている場合でも、存在 = true です。したがって、「orelse」メソッドと「ispresent」メソッドは正しく機能しません。ンペをもらいました。文字列または JSON ファイルから変換するときに、内部に null 値がある場合に、これらのフィールドが「false」に等しいことを確認するにはどうすればよいですか?

json の例:

65bee5661098c

オブジェクトマッパーのこの構成を試してみました。 オブジェクト マッパー構成:

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);

回避策

クラス メンバーで @jsondeserialize jackson annotation を使用してみてください。json では注釈が null になる可能性があり、代わりに値を "false" にしたいとします。 null の場合は次のようになります:

リーリー

以上がJsonNullable オブジェクトは常に isPresent 値 = true になります。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。