web-dev-qa-db-ja.com

オブジェクトマッパーのwriteValueAsStringメソッドでnull値を含めることができる

いくつかのnull値を含む可能性のあるJSONオブジェクトがあります。 _com.fasterxml.jackson.databind_のObjectMapperを使用して、JSONオブジェクトをStringに変換します。

_private ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(object);
_

オブジェクトにnullとして値を含むフィールドが含まれている場合、そのフィールドはwriteValueAsString()からのStringに含まれていません。 ObjectMapperの値がStringであっても、nullのすべてのフィールドを取得できるようにしたい。

例:

_object = {"name": "John", "id": 10}
json   = {"name": "John", "id": 10}

object = {"name": "John", "id": null}
json   = {"name": "John"}
_
11
LINGS

Jacksonはデフォルトでnullフィールドをnullにシリアル化する必要があります。次の例を参照してください

public class Example {

    public static void main(String... args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
        String json = mapper.writeValueAsString(new Test());
        System.out.println(json);
    }

    static class Test {
        private String help = "something";
        private String nope = null;

        public String getHelp() {
            return help;
        }

        public void setHelp(String help) {
            this.help = help;
        }

        public String getNope() {
            return nope;
        }

        public void setNope(String nope) {
            this.nope = nope;
        }
    }
}

プリント

{
  "help" : "something",
  "nope" : null
}

特別なことをする必要はありません。

Include.ALWAYSは私のために働きました。 objectMapper.setSerializationInclusion(com.fasterxml.jackson.annotation.JsonInclude.Include.ALWAYS);

Includeの他の可能な値は次のとおりです。

  • Include.NON_DEFAULT
  • Include.NON_EMPTY
  • Include.NON_NULL
0
Abbin Varghese