From 1acb6fc59acf0ef777a459bd650a068051391a34 Mon Sep 17 00:00:00 2001 From: catalin-burcea Date: Mon, 2 Dec 2019 11:44:19 +0200 Subject: [PATCH] [BAEL-19676] - Move articles out of jackson part 3 --- jackson-2/.gitignore | 16 ---- jackson-2/README.md | 12 --- jackson-2/src/main/resources/logback.xml | 13 --- jackson-annotations/README.md | 4 +- .../com/baeldung/jackson/jsonview/Item.java | 0 .../jsonview/MyBeanSerializerModifier.java | 0 .../jackson/jsonview/UpperCasingWriter.java | 0 .../com/baeldung/jackson/jsonview/User.java | 0 .../com/baeldung/jackson/jsonview/Views.java | 0 .../baeldung/jackson/ignore/dtos/MyDto.java | 54 ----------- .../ignore/dtos/MyDtoIncludeNonDefault.java | 43 --------- .../ignore/dtos/MyDtoWithSpecialField.java | 54 ----------- .../jsonview}/JacksonJsonViewUnitTest.java | 2 +- jackson-conversions-2/README.md | 2 - jackson-custom-conversions/README.md | 9 ++ .../pom.xml | 32 +++---- .../File.java | 2 +- .../Folder.java | 2 +- .../FolderBeanSerializerModifier.java | 3 +- .../FolderSerializer.java | 4 +- ...derSerializerWithCallingOwnSerializer.java | 3 +- ...SerializerWithDefaultSerializerStored.java | 3 +- ...derSerializerWithInternalObjectMapper.java | 3 +- ...olderSerializerWithSerializerProvider.java | 3 +- .../deserialization}/ActorJackson.java | 2 +- .../com/baeldung/deserialization}/Item.java | 2 +- .../deserialization/ItemDeserializer.java | 4 +- .../ItemDeserializerOnClass.java | 10 +-- .../deserialization/ItemWithDeserializer.java | 11 +-- .../com/baeldung/deserialization}/Movie.java | 2 +- .../com/baeldung/deserialization/User.java | 26 ++++++ .../com/baeldung/serialization}/Item.java | 2 +- .../serialization/ItemSerializer.java | 3 +- .../serialization/ItemSerializerOnClass.java | 3 +- .../serialization}/ItemWithSerializer.java | 6 +- .../com/baeldung/serialization}/User.java | 2 +- .../com/baeldung/skipfields}/Address.java | 2 +- .../com/baeldung/skipfields}/Hidable.java | 2 +- .../skipfields}/HidableSerializer.java | 2 +- .../baeldung/skipfields}/MyDtoWithFilter.java | 2 +- .../java/com/baeldung/skipfields}/Person.java | 2 +- .../CallingDefaultSerializerUnitTest.java | 4 +- .../CustomDeserializationUnitTest.java | 64 ++++--------- .../CustomSerializationUnitTest.java | 24 +---- .../IgnoreFieldsWithFilterUnitTest.java | 89 +++++++++++++++++++ .../JacksonDynamicIgnoreUnitTest.java | 6 +- jackson-simple/README.md | 12 ++- jackson-simple/pom.xml | 1 - .../jackson/annotation/AliasBean.java | 0 .../jackson/annotation/BeanWithCreator.java | 0 .../annotation/BeanWithCustomAnnotation.java | 0 .../jackson/annotation/BeanWithFilter.java | 0 .../jackson/annotation/BeanWithGetter.java | 0 .../jackson/annotation/BeanWithIgnore.java | 0 .../jackson/annotation/BeanWithInject.java | 0 .../jackson/annotation/ExtendableBean.java | 0 .../baeldung/jackson/annotation/MyBean.java | 0 .../jackson/annotation/PrivateBean.java | 0 .../baeldung/jackson/annotation/RawBean.java | 0 .../jackson/annotation/UnwrappedUser.java | 0 .../annotation/UserWithIgnoreType.java | 0 .../com/baeldung/jackson/annotation/Zoo.java | 0 .../bidirection/ItemWithIdentity.java | 0 .../bidirection/ItemWithIgnore.java | 0 .../annotation/bidirection/ItemWithRef.java | 0 .../bidirection/UserWithIdentity.java | 0 .../bidirection/UserWithIgnore.java | 0 .../annotation/bidirection/UserWithRef.java | 0 .../date/CustomDateDeserializer.java | 0 .../annotation/date/CustomDateSerializer.java | 0 .../annotation/date/EventWithFormat.java | 0 .../annotation/date/EventWithSerializer.java | 0 .../ItemDeserializerOnClass.java | 0 .../jackson/annotation/dtos/Item.java | 0 .../annotation/dtos/ItemWithSerializer.java | 0 .../jackson/annotation/dtos/User.java | 0 .../dtos/withEnum/DistanceEnumWithValue.java | 0 .../annotation/exception/UserWithRoot.java | 0 .../exception/UserWithRootNamespace.java | 0 .../ignore}/MyMixInForIgnoreType.java | 2 +- .../jackson/annotation/jsonview/Item.java | 0 .../jackson/annotation/jsonview/Views.java | 0 .../serialization/ItemSerializer.java | 0 .../serialization/ItemSerializerOnClass.java | 0 .../com/baeldung/jackson/ignore}/MyDto.java | 2 +- .../jackson/ignore}/MyDtoIgnoreField.java | 2 +- .../ignore}/MyDtoIgnoreFieldByName.java | 2 +- .../jackson/ignore}/MyDtoIgnoreNull.java | 2 +- .../ignore}/MyDtoIncludeNonDefault.java | 2 +- .../jackson/ignore}/MyDtoWithFilter.java | 2 +- .../ignore}/MyDtoWithSpecialField.java | 2 +- .../jackson/ignore}/MyMixInForIgnoreType.java | 2 +- .../jackson/ignorenullfields/MyDto.java | 0 .../ignorenullfields/MyDtoIgnoreNull.java | 0 .../baeldung/jackson/jsonproperty/MyDto.java | 0 .../jsonproperty/MyDtoFieldNameChanged.java | 0 .../objectmapper/CustomCarDeserializer.java | 0 .../objectmapper/CustomCarSerializer.java | 0 .../jackson/objectmapper/dto/Car.java | 0 .../jackson/objectmapper/dto/Request.java | 0 .../jackson/unknownproperties/MyDto.java | 0 .../unknownproperties/MyDtoIgnoreType.java | 0 .../unknownproperties/MyDtoIgnoreUnknown.java | 0 .../annotation/JacksonAnnotationUnitTest.java | 2 +- .../dtos/withEnum/DistanceEnumWithValue.java | 29 ------ .../IgnoreFieldsWithFilterUnitTest.java | 87 ++++++++++++++++++ .../JacksonSerializationIgnoreUnitTest.java | 74 --------------- .../IgnoreNullFieldsUnitTest.java | 2 - .../jsonproperty/JsonPropertyUnitTest.java | 2 +- .../JavaReadWriteJsonExampleUnitTest.java | 0 ...izationDeserializationFeatureUnitTest.java | 0 .../serialization/ItemSerializerOnClass.java | 32 ------- .../UnknownPropertiesUnitTest.java | 0 .../src/test/resources/json_car.json | 0 jackson/.gitignore | 13 --- jackson/README.md | 12 +-- .../jackson/jacksonvsgson/ActorJackson.java | 61 +++++++++++++ .../ActorJacksonSerializer.java | 4 +- .../baeldung/jackson/jacksonvsgson/Movie.java | 50 +++++++++++ .../MovieWithNullValue.java | 2 +- .../jackson/node/JsonNodeIterator.java | 24 ++--- .../mixin => optionalwithjackson}/Book.java | 2 +- .../ItemDeserializerOnClass.java | 41 --------- .../JacksonDeserializeUnitTest.java | 3 +- .../JacksonSerializeUnitTest.java | 5 +- .../jsoncompare}/JsonCompareUnitTest.java | 2 +- .../jackson/node/ExampleStructure.java | 0 .../node/JsonNodeIteratorUnitTest.java | 0 .../com/baeldung/jackson/node/NodeBean.java | 0 .../jackson/node/NodeOperationUnitTest.java | 0 .../OptionalTypeUnitTest.java | 2 +- .../jackson/sandbox/SandboxUnitTest.java | 2 - .../baeldung/jackson/test/UnitTestSuite.java | 4 +- .../try1/JacksonDeserializationUnitTest.java | 25 ------ jackson/src/test/resources/.gitignore | 13 --- .../src/test/resources/node_example.json | 0 pom.xml | 4 +- 137 files changed, 432 insertions(+), 630 deletions(-) delete mode 100644 jackson-2/.gitignore delete mode 100644 jackson-2/README.md delete mode 100644 jackson-2/src/main/resources/logback.xml rename {jackson/src/test => jackson-annotations/src/main}/java/com/baeldung/jackson/jsonview/Item.java (100%) rename {jackson/src/test => jackson-annotations/src/main}/java/com/baeldung/jackson/jsonview/MyBeanSerializerModifier.java (100%) rename {jackson/src/test => jackson-annotations/src/main}/java/com/baeldung/jackson/jsonview/UpperCasingWriter.java (100%) rename {jackson/src/test => jackson-annotations/src/main}/java/com/baeldung/jackson/jsonview/User.java (100%) rename {jackson/src/test => jackson-annotations/src/main}/java/com/baeldung/jackson/jsonview/Views.java (100%) delete mode 100644 jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDto.java delete mode 100644 jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoIncludeNonDefault.java delete mode 100644 jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoWithSpecialField.java rename {jackson/src/test/java/com/baeldung/jackson/test => jackson-annotations/src/test/java/com/baeldung/jackson/jsonview}/JacksonJsonViewUnitTest.java (98%) create mode 100644 jackson-custom-conversions/README.md rename {jackson-2 => jackson-custom-conversions}/pom.xml (63%) rename {jackson-2/src/main/java/com/baeldung/jackson/entities => jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer}/File.java (84%) rename {jackson-2/src/main/java/com/baeldung/jackson/entities => jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer}/Folder.java (96%) rename {jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer => jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer}/FolderBeanSerializerModifier.java (86%) rename {jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer => jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer}/FolderSerializer.java (85%) rename {jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer => jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer}/FolderSerializerWithCallingOwnSerializer.java (87%) rename {jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer => jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer}/FolderSerializerWithDefaultSerializerStored.java (90%) rename {jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer => jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer}/FolderSerializerWithInternalObjectMapper.java (90%) rename {jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer => jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer}/FolderSerializerWithSerializerProvider.java (87%) rename {jackson/src/main/java/com/baeldung/jackson/entities => jackson-custom-conversions/src/main/java/com/baeldung/deserialization}/ActorJackson.java (97%) rename {jackson-simple/src/test/java/com/baeldung/jackson/dtos => jackson-custom-conversions/src/main/java/com/baeldung/deserialization}/Item.java (92%) rename {jackson/src/test/java/com/baeldung/jackson => jackson-custom-conversions/src/main/java/com/baeldung}/deserialization/ItemDeserializer.java (90%) rename {jackson-simple/src/test/java/com/baeldung/jackson => jackson-custom-conversions/src/main/java/com/baeldung}/deserialization/ItemDeserializerOnClass.java (73%) rename jackson/src/test/java/com/baeldung/jackson/dtos/ItemWithSerializer.java => jackson-custom-conversions/src/main/java/com/baeldung/deserialization/ItemWithDeserializer.java (54%) rename {jackson/src/main/java/com/baeldung/jackson/entities => jackson-custom-conversions/src/main/java/com/baeldung/deserialization}/Movie.java (96%) create mode 100644 jackson-custom-conversions/src/main/java/com/baeldung/deserialization/User.java rename {jackson/src/test/java/com/baeldung/jackson/dtos => jackson-custom-conversions/src/main/java/com/baeldung/serialization}/Item.java (93%) rename {jackson-simple/src/test/java/com/baeldung/jackson => jackson-custom-conversions/src/main/java/com/baeldung}/serialization/ItemSerializer.java (91%) rename {jackson/src/test/java/com/baeldung/jackson => jackson-custom-conversions/src/main/java/com/baeldung}/serialization/ItemSerializerOnClass.java (91%) rename {jackson-simple/src/test/java/com/baeldung/jackson/dtos => jackson-custom-conversions/src/main/java/com/baeldung/serialization}/ItemWithSerializer.java (74%) rename {jackson-simple/src/test/java/com/baeldung/jackson/dtos => jackson-custom-conversions/src/main/java/com/baeldung/serialization}/User.java (90%) rename {jackson/src/test/java/com/baeldung/jackson/dynamicIgnore => jackson-custom-conversions/src/main/java/com/baeldung/skipfields}/Address.java (94%) rename {jackson/src/test/java/com/baeldung/jackson/dynamicIgnore => jackson-custom-conversions/src/main/java/com/baeldung/skipfields}/Hidable.java (77%) rename {jackson/src/test/java/com/baeldung/jackson/dynamicIgnore => jackson-custom-conversions/src/main/java/com/baeldung/skipfields}/HidableSerializer.java (95%) rename {jackson-simple/src/test/java/com/baeldung/jackson/dtos => jackson-custom-conversions/src/main/java/com/baeldung/skipfields}/MyDtoWithFilter.java (96%) rename {jackson/src/test/java/com/baeldung/jackson/dynamicIgnore => jackson-custom-conversions/src/main/java/com/baeldung/skipfields}/Person.java (94%) rename {jackson-2/src/test/java/com/baeldung/jackson/serialization/custom/serializer => jackson-custom-conversions/src/test/java/com/baeldung/defaultserializercustomserializer}/CallingDefaultSerializerUnitTest.java (97%) rename jackson/src/test/java/com/baeldung/jackson/test/JacksonDeserializationUnitTest.java => jackson-custom-conversions/src/test/java/com/baeldung/deserialization/CustomDeserializationUnitTest.java (68%) rename jackson-simple/src/test/java/com/baeldung/jackson/test/JacksonSerializationUnitTest.java => jackson-custom-conversions/src/test/java/com/baeldung/serialization/CustomSerializationUnitTest.java (72%) create mode 100644 jackson-custom-conversions/src/test/java/com/baeldung/skipfields/IgnoreFieldsWithFilterUnitTest.java rename {jackson/src/test/java/com/baeldung/jackson/test => jackson-custom-conversions/src/test/java/com/baeldung/skipfields}/JacksonDynamicIgnoreUnitTest.java (93%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/AliasBean.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/BeanWithCreator.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/BeanWithCustomAnnotation.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/BeanWithFilter.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/BeanWithGetter.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/BeanWithIgnore.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/BeanWithInject.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/ExtendableBean.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/MyBean.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/PrivateBean.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/RawBean.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/UnwrappedUser.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/UserWithIgnoreType.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/Zoo.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/bidirection/ItemWithIdentity.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/bidirection/ItemWithIgnore.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/bidirection/ItemWithRef.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/bidirection/UserWithIdentity.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/bidirection/UserWithIgnore.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/bidirection/UserWithRef.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/date/CustomDateDeserializer.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/date/CustomDateSerializer.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/date/EventWithFormat.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/date/EventWithSerializer.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/deserialization/ItemDeserializerOnClass.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/dtos/Item.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/dtos/ItemWithSerializer.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/dtos/User.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/dtos/withEnum/DistanceEnumWithValue.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/exception/UserWithRoot.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/exception/UserWithRootNamespace.java (100%) rename {jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos => jackson-simple/src/main/java/com/baeldung/jackson/annotation/ignore}/MyMixInForIgnoreType.java (71%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/jsonview/Item.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/jsonview/Views.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/serialization/ItemSerializer.java (100%) rename {jackson-annotations => jackson-simple}/src/main/java/com/baeldung/jackson/annotation/serialization/ItemSerializerOnClass.java (100%) rename jackson-simple/src/{test/java/com/baeldung/jackson/dtos => main/java/com/baeldung/jackson/ignore}/MyDto.java (96%) rename {jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos => jackson-simple/src/main/java/com/baeldung/jackson/ignore}/MyDtoIgnoreField.java (94%) rename {jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos => jackson-simple/src/main/java/com/baeldung/jackson/ignore}/MyDtoIgnoreFieldByName.java (95%) rename {jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos => jackson-simple/src/main/java/com/baeldung/jackson/ignore}/MyDtoIgnoreNull.java (96%) rename jackson-simple/src/{test/java/com/baeldung/jackson/dtos => main/java/com/baeldung/jackson/ignore}/MyDtoIncludeNonDefault.java (95%) rename {jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos => jackson-simple/src/main/java/com/baeldung/jackson/ignore}/MyDtoWithFilter.java (96%) rename jackson-simple/src/{test/java/com/baeldung/jackson/dtos => main/java/com/baeldung/jackson/ignore}/MyDtoWithSpecialField.java (96%) rename jackson-simple/src/{test/java/com/baeldung/jackson/dtos => main/java/com/baeldung/jackson/ignore}/MyMixInForIgnoreType.java (76%) rename {jackson-conversions-2/src/test => jackson-simple/src/main}/java/com/baeldung/jackson/ignorenullfields/MyDto.java (100%) rename {jackson-conversions-2/src/test => jackson-simple/src/main}/java/com/baeldung/jackson/ignorenullfields/MyDtoIgnoreNull.java (100%) rename {jackson-annotations/src/test => jackson-simple/src/main}/java/com/baeldung/jackson/jsonproperty/MyDto.java (100%) rename {jackson-annotations/src/test => jackson-simple/src/main}/java/com/baeldung/jackson/jsonproperty/MyDtoFieldNameChanged.java (100%) rename {jackson => jackson-simple}/src/main/java/com/baeldung/jackson/objectmapper/CustomCarDeserializer.java (100%) rename {jackson => jackson-simple}/src/main/java/com/baeldung/jackson/objectmapper/CustomCarSerializer.java (100%) rename {jackson => jackson-simple}/src/main/java/com/baeldung/jackson/objectmapper/dto/Car.java (100%) rename {jackson => jackson-simple}/src/main/java/com/baeldung/jackson/objectmapper/dto/Request.java (100%) rename {jackson-conversions-2 => jackson-simple}/src/main/java/com/baeldung/jackson/unknownproperties/MyDto.java (100%) rename {jackson-conversions-2 => jackson-simple}/src/main/java/com/baeldung/jackson/unknownproperties/MyDtoIgnoreType.java (100%) rename {jackson-conversions-2 => jackson-simple}/src/main/java/com/baeldung/jackson/unknownproperties/MyDtoIgnoreUnknown.java (100%) rename {jackson-annotations => jackson-simple}/src/test/java/com/baeldung/jackson/annotation/JacksonAnnotationUnitTest.java (99%) delete mode 100644 jackson-simple/src/test/java/com/baeldung/jackson/dtos/withEnum/DistanceEnumWithValue.java create mode 100644 jackson-simple/src/test/java/com/baeldung/jackson/ignore/IgnoreFieldsWithFilterUnitTest.java rename {jackson-annotations => jackson-simple}/src/test/java/com/baeldung/jackson/ignore/JacksonSerializationIgnoreUnitTest.java (60%) rename {jackson-conversions-2 => jackson-simple}/src/test/java/com/baeldung/jackson/ignorenullfields/IgnoreNullFieldsUnitTest.java (98%) rename {jackson-annotations => jackson-simple}/src/test/java/com/baeldung/jackson/jsonproperty/JsonPropertyUnitTest.java (98%) rename {jackson => jackson-simple}/src/test/java/com/baeldung/jackson/objectmapper/JavaReadWriteJsonExampleUnitTest.java (100%) rename {jackson => jackson-simple}/src/test/java/com/baeldung/jackson/objectmapper/SerializationDeserializationFeatureUnitTest.java (100%) delete mode 100644 jackson-simple/src/test/java/com/baeldung/jackson/serialization/ItemSerializerOnClass.java rename {jackson-conversions-2 => jackson-simple}/src/test/java/com/baeldung/jackson/unknownproperties/UnknownPropertiesUnitTest.java (100%) rename {jackson => jackson-simple}/src/test/resources/json_car.json (100%) delete mode 100644 jackson/.gitignore create mode 100644 jackson/src/main/java/com/baeldung/jackson/jacksonvsgson/ActorJackson.java rename jackson/src/main/java/com/baeldung/jackson/{serialization => jacksonvsgson}/ActorJacksonSerializer.java (92%) create mode 100644 jackson/src/main/java/com/baeldung/jackson/jacksonvsgson/Movie.java rename jackson/src/main/java/com/baeldung/jackson/{entities => jacksonvsgson}/MovieWithNullValue.java (95%) rename {jackson-2 => jackson}/src/main/java/com/baeldung/jackson/node/JsonNodeIterator.java (75%) rename jackson/src/main/java/com/baeldung/jackson/{miscellaneous/mixin => optionalwithjackson}/Book.java (89%) delete mode 100644 jackson/src/test/java/com/baeldung/jackson/deserialization/ItemDeserializerOnClass.java rename jackson/src/test/java/com/baeldung/jackson/{deserialization => jacksonvsgson}/JacksonDeserializeUnitTest.java (95%) rename jackson/src/test/java/com/baeldung/jackson/{serialization => jacksonvsgson}/JacksonSerializeUnitTest.java (93%) rename {jackson-2/src/test/java/com/baeldung/jackson/json/compare => jackson/src/test/java/com/baeldung/jackson/jsoncompare}/JsonCompareUnitTest.java (99%) rename {jackson-2 => jackson}/src/test/java/com/baeldung/jackson/node/ExampleStructure.java (100%) rename {jackson-2 => jackson}/src/test/java/com/baeldung/jackson/node/JsonNodeIteratorUnitTest.java (100%) rename {jackson-2 => jackson}/src/test/java/com/baeldung/jackson/node/NodeBean.java (100%) rename {jackson-2 => jackson}/src/test/java/com/baeldung/jackson/node/NodeOperationUnitTest.java (100%) rename jackson/src/test/java/com/baeldung/jackson/{miscellaneous/mixin => optionalwithjackson}/OptionalTypeUnitTest.java (97%) delete mode 100644 jackson/src/test/java/com/baeldung/jackson/try1/JacksonDeserializationUnitTest.java delete mode 100644 jackson/src/test/resources/.gitignore rename {jackson-2 => jackson}/src/test/resources/node_example.json (100%) diff --git a/jackson-2/.gitignore b/jackson-2/.gitignore deleted file mode 100644 index 4b1cfaf098..0000000000 --- a/jackson-2/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -*.class - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* - -# Packaged files # -*.jar -*.war -*.ear - -# Files -/src/main/resources/orderOutput.yaml \ No newline at end of file diff --git a/jackson-2/README.md b/jackson-2/README.md deleted file mode 100644 index b583b588ef..0000000000 --- a/jackson-2/README.md +++ /dev/null @@ -1,12 +0,0 @@ -## Jackson Cookbooks and Examples - -This module contains articles about Jackson. - -### The Course -The "REST With Spring" Classes: http://bit.ly/restwithspring - -### Relevant Articles: -- [Working with Tree Model Nodes in Jackson](https://www.baeldung.com/jackson-json-node-tree-model) -- [Compare Two JSON Objects with Jackson](https://www.baeldung.com/jackson-compare-two-json-objects) -- [Calling Default Serializer from Custom Serializer in Jackson](https://www.baeldung.com/jackson-call-default-serializer-from-custom-serializer) -- More articles: [[<-- prev]](/../jackson) diff --git a/jackson-2/src/main/resources/logback.xml b/jackson-2/src/main/resources/logback.xml deleted file mode 100644 index 7d900d8ea8..0000000000 --- a/jackson-2/src/main/resources/logback.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - \ No newline at end of file diff --git a/jackson-annotations/README.md b/jackson-annotations/README.md index d979ec0e0e..783a06605b 100644 --- a/jackson-annotations/README.md +++ b/jackson-annotations/README.md @@ -5,7 +5,5 @@ This module contains articles about Jackson annotations. ### Relevant Articles: - [Guide to @JsonFormat in Jackson](https://www.baeldung.com/jackson-jsonformat) - [More Jackson Annotations](https://www.baeldung.com/jackson-advanced-annotations) -- [Jackson Annotation Examples](https://www.baeldung.com/jackson-annotations) - [Jackson – Bidirectional Relationships](https://www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion) -- [Jackson – Change Name of Field](https://www.baeldung.com/jackson-name-of-property) -- [Jackson Ignore Properties on Marshalling](https://www.baeldung.com/jackson-ignore-properties-on-serialization) +- [Jackson JSON Views](https://www.baeldung.com/jackson-json-view-annotation) diff --git a/jackson/src/test/java/com/baeldung/jackson/jsonview/Item.java b/jackson-annotations/src/main/java/com/baeldung/jackson/jsonview/Item.java similarity index 100% rename from jackson/src/test/java/com/baeldung/jackson/jsonview/Item.java rename to jackson-annotations/src/main/java/com/baeldung/jackson/jsonview/Item.java diff --git a/jackson/src/test/java/com/baeldung/jackson/jsonview/MyBeanSerializerModifier.java b/jackson-annotations/src/main/java/com/baeldung/jackson/jsonview/MyBeanSerializerModifier.java similarity index 100% rename from jackson/src/test/java/com/baeldung/jackson/jsonview/MyBeanSerializerModifier.java rename to jackson-annotations/src/main/java/com/baeldung/jackson/jsonview/MyBeanSerializerModifier.java diff --git a/jackson/src/test/java/com/baeldung/jackson/jsonview/UpperCasingWriter.java b/jackson-annotations/src/main/java/com/baeldung/jackson/jsonview/UpperCasingWriter.java similarity index 100% rename from jackson/src/test/java/com/baeldung/jackson/jsonview/UpperCasingWriter.java rename to jackson-annotations/src/main/java/com/baeldung/jackson/jsonview/UpperCasingWriter.java diff --git a/jackson/src/test/java/com/baeldung/jackson/jsonview/User.java b/jackson-annotations/src/main/java/com/baeldung/jackson/jsonview/User.java similarity index 100% rename from jackson/src/test/java/com/baeldung/jackson/jsonview/User.java rename to jackson-annotations/src/main/java/com/baeldung/jackson/jsonview/User.java diff --git a/jackson/src/test/java/com/baeldung/jackson/jsonview/Views.java b/jackson-annotations/src/main/java/com/baeldung/jackson/jsonview/Views.java similarity index 100% rename from jackson/src/test/java/com/baeldung/jackson/jsonview/Views.java rename to jackson-annotations/src/main/java/com/baeldung/jackson/jsonview/Views.java diff --git a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDto.java b/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDto.java deleted file mode 100644 index 3357c041c0..0000000000 --- a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDto.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.baeldung.jackson.ignore.dtos; - -public class MyDto { - - private String stringValue; - private int intValue; - private boolean booleanValue; - - public MyDto() { - super(); - } - - public MyDto(final String stringValue, final int intValue, final boolean booleanValue) { - super(); - - this.stringValue = stringValue; - this.intValue = intValue; - this.booleanValue = booleanValue; - } - - // API - - public String getStringValue() { - return stringValue; - } - - public void setStringValue(final String stringValue) { - this.stringValue = stringValue; - } - - public int getIntValue() { - return intValue; - } - - public void setIntValue(final int intValue) { - this.intValue = intValue; - } - - public boolean isBooleanValue() { - return booleanValue; - } - - public void setBooleanValue(final boolean booleanValue) { - this.booleanValue = booleanValue; - } - - // - - @Override - public String toString() { - return "MyDto [stringValue=" + stringValue + ", intValue=" + intValue + ", booleanValue=" + booleanValue + "]"; - } - -} diff --git a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoIncludeNonDefault.java b/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoIncludeNonDefault.java deleted file mode 100644 index cf5d1682db..0000000000 --- a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoIncludeNonDefault.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.baeldung.jackson.ignore.dtos; - -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonInclude.Include; - -@JsonInclude(Include.NON_DEFAULT) -public class MyDtoIncludeNonDefault { - - private String stringValue; - private int intValue; - private boolean booleanValue; - - public MyDtoIncludeNonDefault() { - super(); - } - - // API - - public String getStringValue() { - return stringValue; - } - - public void setStringValue(final String stringValue) { - this.stringValue = stringValue; - } - - public int getIntValue() { - return intValue; - } - - public void setIntValue(final int intValue) { - this.intValue = intValue; - } - - public boolean isBooleanValue() { - return booleanValue; - } - - public void setBooleanValue(final boolean booleanValue) { - this.booleanValue = booleanValue; - } - -} diff --git a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoWithSpecialField.java b/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoWithSpecialField.java deleted file mode 100644 index edb0dab13b..0000000000 --- a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoWithSpecialField.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.baeldung.jackson.ignore.dtos; - -public class MyDtoWithSpecialField { - - private String[] stringValue; - private int intValue; - private boolean booleanValue; - - public MyDtoWithSpecialField() { - super(); - } - - public MyDtoWithSpecialField(final String[] stringValue, final int intValue, final boolean booleanValue) { - super(); - - this.stringValue = stringValue; - this.intValue = intValue; - this.booleanValue = booleanValue; - } - - // API - - public String[] getStringValue() { - return stringValue; - } - - public void setStringValue(final String[] stringValue) { - this.stringValue = stringValue; - } - - public int getIntValue() { - return intValue; - } - - public void setIntValue(final int intValue) { - this.intValue = intValue; - } - - public boolean isBooleanValue() { - return booleanValue; - } - - public void setBooleanValue(final boolean booleanValue) { - this.booleanValue = booleanValue; - } - - // - - @Override - public String toString() { - return "MyDto [stringValue=" + stringValue + ", intValue=" + intValue + ", booleanValue=" + booleanValue + "]"; - } - -} diff --git a/jackson/src/test/java/com/baeldung/jackson/test/JacksonJsonViewUnitTest.java b/jackson-annotations/src/test/java/com/baeldung/jackson/jsonview/JacksonJsonViewUnitTest.java similarity index 98% rename from jackson/src/test/java/com/baeldung/jackson/test/JacksonJsonViewUnitTest.java rename to jackson-annotations/src/test/java/com/baeldung/jackson/jsonview/JacksonJsonViewUnitTest.java index 7930195ab0..4074da1a55 100644 --- a/jackson/src/test/java/com/baeldung/jackson/test/JacksonJsonViewUnitTest.java +++ b/jackson-annotations/src/test/java/com/baeldung/jackson/jsonview/JacksonJsonViewUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.test; +package com.baeldung.jackson.jsonview; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; diff --git a/jackson-conversions-2/README.md b/jackson-conversions-2/README.md index 210f5cd5bb..71c5578525 100644 --- a/jackson-conversions-2/README.md +++ b/jackson-conversions-2/README.md @@ -4,8 +4,6 @@ This module contains articles about Jackson conversions. ### Relevant Articles: - [Mapping a Dynamic JSON Object with Jackson](https://www.baeldung.com/jackson-mapping-dynamic-object) -- [Jackson Unmarshalling JSON with Unknown Properties](https://www.baeldung.com/jackson-deserialize-json-unknown-properties) -- [Ignore Null Fields with Jackson](https://www.baeldung.com/jackson-ignore-null-fields) - [Mapping Multiple JSON Fields to a Single Java Field](https://www.baeldung.com/json-multiple-fields-single-java-field) - [Convert XML to JSON Using Jackson](https://www.baeldung.com/jackson-convert-xml-json) - [Converting JSON to CSV in Java](https://www.baeldung.com/java-converting-json-to-csv) diff --git a/jackson-custom-conversions/README.md b/jackson-custom-conversions/README.md new file mode 100644 index 0000000000..68e9a6d50d --- /dev/null +++ b/jackson-custom-conversions/README.md @@ -0,0 +1,9 @@ +## Jackson Custom Conversions + +This module contains articles about Jackson custom conversions. + +### Relevant Articles: +- [Jackson – Custom Serializer](https://www.baeldung.com/jackson-custom-serialization) +- [Getting Started with Custom Deserialization in Jackson](https://www.baeldung.com/jackson-deserialization) +- [Serialize Only Fields that meet a Custom Criteria with Jackson](https://www.baeldung.com/jackson-serialize-field-custom-criteria) +- [Calling Default Serializer from Custom Serializer in Jackson](https://www.baeldung.com/jackson-call-default-serializer-from-custom-serializer) diff --git a/jackson-2/pom.xml b/jackson-custom-conversions/pom.xml similarity index 63% rename from jackson-2/pom.xml rename to jackson-custom-conversions/pom.xml index 87a050417c..501bc28d6d 100644 --- a/jackson-2/pom.xml +++ b/jackson-custom-conversions/pom.xml @@ -1,9 +1,9 @@ 4.0.0 - jackson-2 - 0.1-SNAPSHOT - jackson-2 + jackson-custom-conversions + 0.0.1-SNAPSHOT + jackson-custom-conversions com.baeldung @@ -13,27 +13,25 @@ - - + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + com.fasterxml.jackson.datatype jackson-datatype-jsr310 ${jackson.version} - - - - - org.assertj - assertj-core - ${assertj.version} - test + com.fasterxml.jackson.datatype + jackson-datatype-joda + ${jackson.version} - jackson-2 + jackson-custom-conversions src/main/resources @@ -42,10 +40,4 @@ - - - - 3.11.0 - - diff --git a/jackson-2/src/main/java/com/baeldung/jackson/entities/File.java b/jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/File.java similarity index 84% rename from jackson-2/src/main/java/com/baeldung/jackson/entities/File.java rename to jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/File.java index 0e8829e927..791ad3a466 100644 --- a/jackson-2/src/main/java/com/baeldung/jackson/entities/File.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/File.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.entities; +package com.baeldung.defaultserializercustomserializer; public class File { diff --git a/jackson-2/src/main/java/com/baeldung/jackson/entities/Folder.java b/jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/Folder.java similarity index 96% rename from jackson-2/src/main/java/com/baeldung/jackson/entities/Folder.java rename to jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/Folder.java index c49e46b204..6f423059a2 100644 --- a/jackson-2/src/main/java/com/baeldung/jackson/entities/Folder.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/Folder.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.entities; +package com.baeldung.defaultserializercustomserializer; import java.util.ArrayList; import java.util.Date; diff --git a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderBeanSerializerModifier.java b/jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderBeanSerializerModifier.java similarity index 86% rename from jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderBeanSerializerModifier.java rename to jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderBeanSerializerModifier.java index a3add58dc4..819971939c 100644 --- a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderBeanSerializerModifier.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderBeanSerializerModifier.java @@ -1,6 +1,5 @@ -package com.baeldung.jackson.serialization.custom.serializer; +package com.baeldung.defaultserializercustomserializer; -import com.baeldung.jackson.entities.Folder; import com.fasterxml.jackson.databind.BeanDescription; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializationConfig; diff --git a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializer.java b/jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderSerializer.java similarity index 85% rename from jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializer.java rename to jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderSerializer.java index f385e63e09..3869ab15d8 100644 --- a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializer.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderSerializer.java @@ -1,9 +1,7 @@ -package com.baeldung.jackson.serialization.custom.serializer; +package com.baeldung.defaultserializercustomserializer; import java.io.IOException; -import com.baeldung.jackson.entities.File; -import com.baeldung.jackson.entities.Folder; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.std.StdSerializer; diff --git a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithCallingOwnSerializer.java b/jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderSerializerWithCallingOwnSerializer.java similarity index 87% rename from jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithCallingOwnSerializer.java rename to jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderSerializerWithCallingOwnSerializer.java index ed5d9fffb8..544a4c6d1a 100644 --- a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithCallingOwnSerializer.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderSerializerWithCallingOwnSerializer.java @@ -1,8 +1,7 @@ -package com.baeldung.jackson.serialization.custom.serializer; +package com.baeldung.defaultserializercustomserializer; import java.io.IOException; -import com.baeldung.jackson.entities.Folder; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.std.StdSerializer; diff --git a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithDefaultSerializerStored.java b/jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderSerializerWithDefaultSerializerStored.java similarity index 90% rename from jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithDefaultSerializerStored.java rename to jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderSerializerWithDefaultSerializerStored.java index d4a95cd939..558b303301 100644 --- a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithDefaultSerializerStored.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderSerializerWithDefaultSerializerStored.java @@ -1,8 +1,7 @@ -package com.baeldung.jackson.serialization.custom.serializer; +package com.baeldung.defaultserializercustomserializer; import java.io.IOException; -import com.baeldung.jackson.entities.Folder; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; diff --git a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithInternalObjectMapper.java b/jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderSerializerWithInternalObjectMapper.java similarity index 90% rename from jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithInternalObjectMapper.java rename to jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderSerializerWithInternalObjectMapper.java index b23dc32205..1ad51c63c0 100644 --- a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithInternalObjectMapper.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderSerializerWithInternalObjectMapper.java @@ -1,8 +1,7 @@ -package com.baeldung.jackson.serialization.custom.serializer; +package com.baeldung.defaultserializercustomserializer; import java.io.IOException; -import com.baeldung.jackson.entities.Folder; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializerProvider; diff --git a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithSerializerProvider.java b/jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderSerializerWithSerializerProvider.java similarity index 87% rename from jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithSerializerProvider.java rename to jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderSerializerWithSerializerProvider.java index 81990a084d..8aeb28b3d0 100644 --- a/jackson-2/src/main/java/com/baeldung/jackson/serialization/custom/serializer/FolderSerializerWithSerializerProvider.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/defaultserializercustomserializer/FolderSerializerWithSerializerProvider.java @@ -1,8 +1,7 @@ -package com.baeldung.jackson.serialization.custom.serializer; +package com.baeldung.defaultserializercustomserializer; import java.io.IOException; -import com.baeldung.jackson.entities.Folder; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.std.StdSerializer; diff --git a/jackson/src/main/java/com/baeldung/jackson/entities/ActorJackson.java b/jackson-custom-conversions/src/main/java/com/baeldung/deserialization/ActorJackson.java similarity index 97% rename from jackson/src/main/java/com/baeldung/jackson/entities/ActorJackson.java rename to jackson-custom-conversions/src/main/java/com/baeldung/deserialization/ActorJackson.java index 76f87d80b3..4bf3bc57f6 100644 --- a/jackson/src/main/java/com/baeldung/jackson/entities/ActorJackson.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/deserialization/ActorJackson.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.entities; +package com.baeldung.deserialization; import java.text.DateFormat; import java.text.SimpleDateFormat; diff --git a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/Item.java b/jackson-custom-conversions/src/main/java/com/baeldung/deserialization/Item.java similarity index 92% rename from jackson-simple/src/test/java/com/baeldung/jackson/dtos/Item.java rename to jackson-custom-conversions/src/main/java/com/baeldung/deserialization/Item.java index 6fce2bc88e..e6234bb6e9 100644 --- a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/Item.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/deserialization/Item.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.dtos; +package com.baeldung.deserialization; public class Item { public int id; diff --git a/jackson/src/test/java/com/baeldung/jackson/deserialization/ItemDeserializer.java b/jackson-custom-conversions/src/main/java/com/baeldung/deserialization/ItemDeserializer.java similarity index 90% rename from jackson/src/test/java/com/baeldung/jackson/deserialization/ItemDeserializer.java rename to jackson-custom-conversions/src/main/java/com/baeldung/deserialization/ItemDeserializer.java index bbc3f31a6c..7ae2faa04d 100644 --- a/jackson/src/test/java/com/baeldung/jackson/deserialization/ItemDeserializer.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/deserialization/ItemDeserializer.java @@ -1,9 +1,7 @@ -package com.baeldung.jackson.deserialization; +package com.baeldung.deserialization; import java.io.IOException; -import com.baeldung.jackson.dtos.Item; -import com.baeldung.jackson.dtos.User; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationContext; diff --git a/jackson-simple/src/test/java/com/baeldung/jackson/deserialization/ItemDeserializerOnClass.java b/jackson-custom-conversions/src/main/java/com/baeldung/deserialization/ItemDeserializerOnClass.java similarity index 73% rename from jackson-simple/src/test/java/com/baeldung/jackson/deserialization/ItemDeserializerOnClass.java rename to jackson-custom-conversions/src/main/java/com/baeldung/deserialization/ItemDeserializerOnClass.java index eaba9a7173..b9db114c4a 100644 --- a/jackson-simple/src/test/java/com/baeldung/jackson/deserialization/ItemDeserializerOnClass.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/deserialization/ItemDeserializerOnClass.java @@ -1,9 +1,7 @@ -package com.baeldung.jackson.deserialization; +package com.baeldung.deserialization; import java.io.IOException; -import com.baeldung.jackson.dtos.ItemWithSerializer; -import com.baeldung.jackson.dtos.User; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationContext; @@ -11,7 +9,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.deser.std.StdDeserializer; import com.fasterxml.jackson.databind.node.IntNode; -public class ItemDeserializerOnClass extends StdDeserializer { +public class ItemDeserializerOnClass extends StdDeserializer { private static final long serialVersionUID = 5579141241817332594L; @@ -27,7 +25,7 @@ public class ItemDeserializerOnClass extends StdDeserializer * {"id":1,"itemNr":"theItem","owner":2} */ @Override - public ItemWithSerializer deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException, JsonProcessingException { + public ItemWithDeserializer deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException, JsonProcessingException { final JsonNode node = jp.getCodec() .readTree(jp); final int id = (Integer) ((IntNode) node.get("id")).numberValue(); @@ -35,7 +33,7 @@ public class ItemDeserializerOnClass extends StdDeserializer .asText(); final int userId = (Integer) ((IntNode) node.get("owner")).numberValue(); - return new ItemWithSerializer(id, itemName, new User(userId, null)); + return new ItemWithDeserializer(id, itemName, new User(userId, null)); } } \ No newline at end of file diff --git a/jackson/src/test/java/com/baeldung/jackson/dtos/ItemWithSerializer.java b/jackson-custom-conversions/src/main/java/com/baeldung/deserialization/ItemWithDeserializer.java similarity index 54% rename from jackson/src/test/java/com/baeldung/jackson/dtos/ItemWithSerializer.java rename to jackson-custom-conversions/src/main/java/com/baeldung/deserialization/ItemWithDeserializer.java index aea9aa770d..1ab36e4acd 100644 --- a/jackson/src/test/java/com/baeldung/jackson/dtos/ItemWithSerializer.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/deserialization/ItemWithDeserializer.java @@ -1,19 +1,14 @@ -package com.baeldung.jackson.dtos; - -import com.baeldung.jackson.deserialization.ItemDeserializerOnClass; -import com.baeldung.jackson.serialization.ItemSerializerOnClass; +package com.baeldung.deserialization; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -@JsonSerialize(using = ItemSerializerOnClass.class) @JsonDeserialize(using = ItemDeserializerOnClass.class) -public class ItemWithSerializer { +public class ItemWithDeserializer { public final int id; public final String itemName; public final User owner; - public ItemWithSerializer(final int id, final String itemName, final User owner) { + public ItemWithDeserializer(final int id, final String itemName, final User owner) { this.id = id; this.itemName = itemName; this.owner = owner; diff --git a/jackson/src/main/java/com/baeldung/jackson/entities/Movie.java b/jackson-custom-conversions/src/main/java/com/baeldung/deserialization/Movie.java similarity index 96% rename from jackson/src/main/java/com/baeldung/jackson/entities/Movie.java rename to jackson-custom-conversions/src/main/java/com/baeldung/deserialization/Movie.java index bdbb6c004f..fdb107dca2 100644 --- a/jackson/src/main/java/com/baeldung/jackson/entities/Movie.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/deserialization/Movie.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.entities; +package com.baeldung.deserialization; import java.util.List; diff --git a/jackson-custom-conversions/src/main/java/com/baeldung/deserialization/User.java b/jackson-custom-conversions/src/main/java/com/baeldung/deserialization/User.java new file mode 100644 index 0000000000..d22a85aafd --- /dev/null +++ b/jackson-custom-conversions/src/main/java/com/baeldung/deserialization/User.java @@ -0,0 +1,26 @@ +package com.baeldung.deserialization; + +public class User { + public int id; + public String name; + + public User() { + super(); + } + + public User(final int id, final String name) { + this.id = id; + this.name = name; + } + + // API + + public int getId() { + return id; + } + + public String getName() { + return name; + } + +} \ No newline at end of file diff --git a/jackson/src/test/java/com/baeldung/jackson/dtos/Item.java b/jackson-custom-conversions/src/main/java/com/baeldung/serialization/Item.java similarity index 93% rename from jackson/src/test/java/com/baeldung/jackson/dtos/Item.java rename to jackson-custom-conversions/src/main/java/com/baeldung/serialization/Item.java index 6fce2bc88e..52a73b048c 100644 --- a/jackson/src/test/java/com/baeldung/jackson/dtos/Item.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/serialization/Item.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.dtos; +package com.baeldung.serialization; public class Item { public int id; diff --git a/jackson-simple/src/test/java/com/baeldung/jackson/serialization/ItemSerializer.java b/jackson-custom-conversions/src/main/java/com/baeldung/serialization/ItemSerializer.java similarity index 91% rename from jackson-simple/src/test/java/com/baeldung/jackson/serialization/ItemSerializer.java rename to jackson-custom-conversions/src/main/java/com/baeldung/serialization/ItemSerializer.java index b5624c566a..dc0b5e1c88 100644 --- a/jackson-simple/src/test/java/com/baeldung/jackson/serialization/ItemSerializer.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/serialization/ItemSerializer.java @@ -1,8 +1,7 @@ -package com.baeldung.jackson.serialization; +package com.baeldung.serialization; import java.io.IOException; -import com.baeldung.jackson.dtos.Item; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.SerializerProvider; diff --git a/jackson/src/test/java/com/baeldung/jackson/serialization/ItemSerializerOnClass.java b/jackson-custom-conversions/src/main/java/com/baeldung/serialization/ItemSerializerOnClass.java similarity index 91% rename from jackson/src/test/java/com/baeldung/jackson/serialization/ItemSerializerOnClass.java rename to jackson-custom-conversions/src/main/java/com/baeldung/serialization/ItemSerializerOnClass.java index 1fdf44e17c..8f56c349f2 100644 --- a/jackson/src/test/java/com/baeldung/jackson/serialization/ItemSerializerOnClass.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/serialization/ItemSerializerOnClass.java @@ -1,8 +1,7 @@ -package com.baeldung.jackson.serialization; +package com.baeldung.serialization; import java.io.IOException; -import com.baeldung.jackson.dtos.ItemWithSerializer; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.SerializerProvider; diff --git a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/ItemWithSerializer.java b/jackson-custom-conversions/src/main/java/com/baeldung/serialization/ItemWithSerializer.java similarity index 74% rename from jackson-simple/src/test/java/com/baeldung/jackson/dtos/ItemWithSerializer.java rename to jackson-custom-conversions/src/main/java/com/baeldung/serialization/ItemWithSerializer.java index aea9aa770d..5b38ad1af6 100644 --- a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/ItemWithSerializer.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/serialization/ItemWithSerializer.java @@ -1,13 +1,9 @@ -package com.baeldung.jackson.dtos; - -import com.baeldung.jackson.deserialization.ItemDeserializerOnClass; -import com.baeldung.jackson.serialization.ItemSerializerOnClass; +package com.baeldung.serialization; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; @JsonSerialize(using = ItemSerializerOnClass.class) -@JsonDeserialize(using = ItemDeserializerOnClass.class) public class ItemWithSerializer { public final int id; public final String itemName; diff --git a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/User.java b/jackson-custom-conversions/src/main/java/com/baeldung/serialization/User.java similarity index 90% rename from jackson-simple/src/test/java/com/baeldung/jackson/dtos/User.java rename to jackson-custom-conversions/src/main/java/com/baeldung/serialization/User.java index 2418e8070d..b01ccc9ffb 100644 --- a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/User.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/serialization/User.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.dtos; +package com.baeldung.serialization; public class User { public int id; diff --git a/jackson/src/test/java/com/baeldung/jackson/dynamicIgnore/Address.java b/jackson-custom-conversions/src/main/java/com/baeldung/skipfields/Address.java similarity index 94% rename from jackson/src/test/java/com/baeldung/jackson/dynamicIgnore/Address.java rename to jackson-custom-conversions/src/main/java/com/baeldung/skipfields/Address.java index daca85f66a..a394bbc180 100644 --- a/jackson/src/test/java/com/baeldung/jackson/dynamicIgnore/Address.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/skipfields/Address.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.dynamicIgnore; +package com.baeldung.skipfields; public class Address implements Hidable { private String city; diff --git a/jackson/src/test/java/com/baeldung/jackson/dynamicIgnore/Hidable.java b/jackson-custom-conversions/src/main/java/com/baeldung/skipfields/Hidable.java similarity index 77% rename from jackson/src/test/java/com/baeldung/jackson/dynamicIgnore/Hidable.java rename to jackson-custom-conversions/src/main/java/com/baeldung/skipfields/Hidable.java index a32e6844a6..fff7f81d1e 100644 --- a/jackson/src/test/java/com/baeldung/jackson/dynamicIgnore/Hidable.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/skipfields/Hidable.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.dynamicIgnore; +package com.baeldung.skipfields; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/jackson/src/test/java/com/baeldung/jackson/dynamicIgnore/HidableSerializer.java b/jackson-custom-conversions/src/main/java/com/baeldung/skipfields/HidableSerializer.java similarity index 95% rename from jackson/src/test/java/com/baeldung/jackson/dynamicIgnore/HidableSerializer.java rename to jackson-custom-conversions/src/main/java/com/baeldung/skipfields/HidableSerializer.java index 46396dae2a..8b300444c0 100644 --- a/jackson/src/test/java/com/baeldung/jackson/dynamicIgnore/HidableSerializer.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/skipfields/HidableSerializer.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.dynamicIgnore; +package com.baeldung.skipfields; import java.io.IOException; diff --git a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/MyDtoWithFilter.java b/jackson-custom-conversions/src/main/java/com/baeldung/skipfields/MyDtoWithFilter.java similarity index 96% rename from jackson-simple/src/test/java/com/baeldung/jackson/dtos/MyDtoWithFilter.java rename to jackson-custom-conversions/src/main/java/com/baeldung/skipfields/MyDtoWithFilter.java index 91f5e148b2..50492c337a 100644 --- a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/MyDtoWithFilter.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/skipfields/MyDtoWithFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.dtos; +package com.baeldung.skipfields; import com.fasterxml.jackson.annotation.JsonFilter; diff --git a/jackson/src/test/java/com/baeldung/jackson/dynamicIgnore/Person.java b/jackson-custom-conversions/src/main/java/com/baeldung/skipfields/Person.java similarity index 94% rename from jackson/src/test/java/com/baeldung/jackson/dynamicIgnore/Person.java rename to jackson-custom-conversions/src/main/java/com/baeldung/skipfields/Person.java index daa62b4be6..e1501947d3 100644 --- a/jackson/src/test/java/com/baeldung/jackson/dynamicIgnore/Person.java +++ b/jackson-custom-conversions/src/main/java/com/baeldung/skipfields/Person.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.dynamicIgnore; +package com.baeldung.skipfields; public class Person implements Hidable { private String name; diff --git a/jackson-2/src/test/java/com/baeldung/jackson/serialization/custom/serializer/CallingDefaultSerializerUnitTest.java b/jackson-custom-conversions/src/test/java/com/baeldung/defaultserializercustomserializer/CallingDefaultSerializerUnitTest.java similarity index 97% rename from jackson-2/src/test/java/com/baeldung/jackson/serialization/custom/serializer/CallingDefaultSerializerUnitTest.java rename to jackson-custom-conversions/src/test/java/com/baeldung/defaultserializercustomserializer/CallingDefaultSerializerUnitTest.java index b067e7b501..c8b4ec7e1a 100644 --- a/jackson-2/src/test/java/com/baeldung/jackson/serialization/custom/serializer/CallingDefaultSerializerUnitTest.java +++ b/jackson-custom-conversions/src/test/java/com/baeldung/defaultserializercustomserializer/CallingDefaultSerializerUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.serialization.custom.serializer; +package com.baeldung.defaultserializercustomserializer; import static org.junit.Assert.assertTrue; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -14,8 +14,6 @@ import java.util.Map; import org.junit.Before; import org.junit.Test; -import com.baeldung.jackson.entities.File; -import com.baeldung.jackson.entities.Folder; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; diff --git a/jackson/src/test/java/com/baeldung/jackson/test/JacksonDeserializationUnitTest.java b/jackson-custom-conversions/src/test/java/com/baeldung/deserialization/CustomDeserializationUnitTest.java similarity index 68% rename from jackson/src/test/java/com/baeldung/jackson/test/JacksonDeserializationUnitTest.java rename to jackson-custom-conversions/src/test/java/com/baeldung/deserialization/CustomDeserializationUnitTest.java index 7bb40cbef9..f2a2502c3e 100644 --- a/jackson/src/test/java/com/baeldung/jackson/test/JacksonDeserializationUnitTest.java +++ b/jackson-custom-conversions/src/test/java/com/baeldung/deserialization/CustomDeserializationUnitTest.java @@ -1,4 +1,16 @@ -package com.baeldung.jackson.test; +package com.baeldung.deserialization; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.module.SimpleModule; +import org.junit.Test; + +import java.io.IOException; +import java.time.ZoneId; +import java.time.ZonedDateTime; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; @@ -7,53 +19,7 @@ import static org.hamcrest.Matchers.notNullValue; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; -import java.io.IOException; -import java.time.ZoneId; -import java.time.ZonedDateTime; - -import org.junit.Test; - -import com.baeldung.jackson.deserialization.ItemDeserializer; -import com.baeldung.jackson.dtos.Item; -import com.baeldung.jackson.dtos.ItemWithSerializer; -import com.baeldung.jackson.dtos.MyDto; -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException; -import com.fasterxml.jackson.databind.module.SimpleModule; - -public class JacksonDeserializationUnitTest { - - @Test - public final void whenDeserializingAJsonToAClass_thenCorrect() throws JsonParseException, JsonMappingException, IOException { - final String jsonAsString = "{\"stringValue\":\"a\",\"intValue\":1,\"booleanValue\":true}"; - final ObjectMapper mapper = new ObjectMapper(); - - final MyDto readValue = mapper.readValue(jsonAsString, MyDto.class); - - assertNotNull(readValue); - assertThat(readValue.getStringValue(), equalTo("a")); - } - - @Test - public final void givenNotAllFieldsHaveValuesInJson_whenDeserializingAJsonToAClass_thenCorrect() throws JsonParseException, JsonMappingException, IOException { - final String jsonAsString = "{\"stringValue\":\"a\",\"booleanValue\":true}"; - final ObjectMapper mapper = new ObjectMapper(); - - final MyDto readValue = mapper.readValue(jsonAsString, MyDto.class); - - assertNotNull(readValue); - assertThat(readValue.getStringValue(), equalTo("a")); - assertThat(readValue.isBooleanValue(), equalTo(true)); - } - - // custom deserialization +public class CustomDeserializationUnitTest { @Test public final void whenDeserializingTheStandardRepresentation_thenCorrect() throws JsonParseException, JsonMappingException, IOException { @@ -80,7 +46,7 @@ public class JacksonDeserializationUnitTest { public final void givenDeserializerIsOnClass_whenDeserializingCustomRepresentation_thenCorrect() throws JsonParseException, JsonMappingException, IOException { final String json = "{\"id\":1,\"itemName\":\"theItem\",\"owner\":2}"; - final ItemWithSerializer readValue = new ObjectMapper().readValue(json, ItemWithSerializer.class); + final ItemWithDeserializer readValue = new ObjectMapper().readValue(json, ItemWithDeserializer.class); assertThat(readValue, notNullValue()); } diff --git a/jackson-simple/src/test/java/com/baeldung/jackson/test/JacksonSerializationUnitTest.java b/jackson-custom-conversions/src/test/java/com/baeldung/serialization/CustomSerializationUnitTest.java similarity index 72% rename from jackson-simple/src/test/java/com/baeldung/jackson/test/JacksonSerializationUnitTest.java rename to jackson-custom-conversions/src/test/java/com/baeldung/serialization/CustomSerializationUnitTest.java index 93dd708b18..6cb4019fa2 100644 --- a/jackson-simple/src/test/java/com/baeldung/jackson/test/JacksonSerializationUnitTest.java +++ b/jackson-custom-conversions/src/test/java/com/baeldung/serialization/CustomSerializationUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.test; +package com.baeldung.serialization; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; @@ -7,12 +7,6 @@ import static org.junit.Assert.assertThat; import java.io.IOException; import java.util.List; - -import com.baeldung.jackson.dtos.User; -import com.baeldung.jackson.dtos.Item; -import com.baeldung.jackson.dtos.ItemWithSerializer; -import com.baeldung.jackson.dtos.MyDto; -import com.baeldung.jackson.serialization.ItemSerializer; import org.junit.Test; import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; @@ -24,21 +18,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; import com.google.common.collect.Lists; -public class JacksonSerializationUnitTest { - - // tests - multiple entities to json - - @Test - public final void whenDtoIsSerialized_thenCorrect() throws JsonParseException, IOException { - final List listOfDtos = Lists.newArrayList(new MyDto("a", 1, true), new MyDto("bc", 3, false)); - - final ObjectMapper mapper = new ObjectMapper(); - final String dtosAsString = mapper.writeValueAsString(listOfDtos); - - System.out.println(dtosAsString); - } - - // tests - custom serializer +public class CustomSerializationUnitTest { @Test public final void whenSerializing_thenNoExceptions() throws JsonGenerationException, JsonMappingException, IOException { diff --git a/jackson-custom-conversions/src/test/java/com/baeldung/skipfields/IgnoreFieldsWithFilterUnitTest.java b/jackson-custom-conversions/src/test/java/com/baeldung/skipfields/IgnoreFieldsWithFilterUnitTest.java new file mode 100644 index 0000000000..e71f31bc6a --- /dev/null +++ b/jackson-custom-conversions/src/test/java/com/baeldung/skipfields/IgnoreFieldsWithFilterUnitTest.java @@ -0,0 +1,89 @@ +package com.baeldung.skipfields; + +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.BeanPropertyWriter; +import com.fasterxml.jackson.databind.ser.FilterProvider; +import com.fasterxml.jackson.databind.ser.PropertyFilter; +import com.fasterxml.jackson.databind.ser.PropertyWriter; +import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter; +import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider; +import org.junit.Test; + +import java.io.IOException; + +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.not; +import static org.junit.Assert.assertThat; + +public class IgnoreFieldsWithFilterUnitTest { + + @Test + public final void givenTypeHasFilterThatIgnoresFieldByName_whenDtoIsSerialized_thenCorrect() throws JsonParseException, IOException { + final ObjectMapper mapper = new ObjectMapper(); + final SimpleBeanPropertyFilter theFilter = SimpleBeanPropertyFilter.serializeAllExcept("intValue"); + final FilterProvider filters = new SimpleFilterProvider().addFilter("myFilter", theFilter); + + final MyDtoWithFilter dtoObject = new MyDtoWithFilter(); + dtoObject.setIntValue(12); + + final String dtoAsString = mapper.writer(filters) + .writeValueAsString(dtoObject); + + assertThat(dtoAsString, not(containsString("intValue"))); + assertThat(dtoAsString, containsString("booleanValue")); + assertThat(dtoAsString, containsString("stringValue")); + System.out.println(dtoAsString); + } + + @Test + public final void givenTypeHasFilterThatIgnoresNegativeInt_whenDtoIsSerialized_thenCorrect() throws JsonParseException, IOException { + final PropertyFilter theFilter = new SimpleBeanPropertyFilter() { + @Override + public final void serializeAsField(final Object pojo, final JsonGenerator jgen, final SerializerProvider provider, final PropertyWriter writer) throws Exception { + if (include(writer)) { + if (!writer.getName() + .equals("intValue")) { + writer.serializeAsField(pojo, jgen, provider); + return; + } + + final int intValue = ((MyDtoWithFilter) pojo).getIntValue(); + if (intValue >= 0) { + writer.serializeAsField(pojo, jgen, provider); + } + } else if (!jgen.canOmitFields()) { // since 2.3 + writer.serializeAsOmittedField(pojo, jgen, provider); + } + } + + @Override + protected final boolean include(final BeanPropertyWriter writer) { + return true; + } + + @Override + protected final boolean include(final PropertyWriter writer) { + return true; + } + }; + final FilterProvider filters = new SimpleFilterProvider().addFilter("myFilter", theFilter); + + final MyDtoWithFilter dtoObject = new MyDtoWithFilter(); + dtoObject.setIntValue(-1); + + final ObjectMapper mapper = new ObjectMapper(); + final String dtoAsString = mapper.writer(filters) + .writeValueAsString(dtoObject); + + assertThat(dtoAsString, not(containsString("intValue"))); + assertThat(dtoAsString, containsString("booleanValue")); + assertThat(dtoAsString, containsString("stringValue")); + System.out.println(dtoAsString); + } + +} diff --git a/jackson/src/test/java/com/baeldung/jackson/test/JacksonDynamicIgnoreUnitTest.java b/jackson-custom-conversions/src/test/java/com/baeldung/skipfields/JacksonDynamicIgnoreUnitTest.java similarity index 93% rename from jackson/src/test/java/com/baeldung/jackson/test/JacksonDynamicIgnoreUnitTest.java rename to jackson-custom-conversions/src/test/java/com/baeldung/skipfields/JacksonDynamicIgnoreUnitTest.java index 2f0f45828b..6ba14f7476 100644 --- a/jackson/src/test/java/com/baeldung/jackson/test/JacksonDynamicIgnoreUnitTest.java +++ b/jackson-custom-conversions/src/test/java/com/baeldung/skipfields/JacksonDynamicIgnoreUnitTest.java @@ -1,14 +1,10 @@ -package com.baeldung.jackson.test; +package com.baeldung.skipfields; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.Arrays; -import com.baeldung.jackson.dynamicIgnore.Address; -import com.baeldung.jackson.dynamicIgnore.HidableSerializer; -import com.baeldung.jackson.dynamicIgnore.Person; -import com.baeldung.jackson.dynamicIgnore.Hidable; import org.junit.Before; import org.junit.Test; diff --git a/jackson-simple/README.md b/jackson-simple/README.md index 558b506c8a..ffc76ead22 100644 --- a/jackson-simple/README.md +++ b/jackson-simple/README.md @@ -6,4 +6,14 @@ This module contains articles about Jackson that are also part of the Jackson Eb The "REST With Spring" Classes: http://bit.ly/restwithspring -### Relevant Articles: +### Relevant Articles: +- [Jackson Annotation Examples](https://www.baeldung.com/jackson-annotations) +- [Intro to the Jackson ObjectMapper](https://www.baeldung.com/jackson-object-mapper-tutorial) +- [Jackson Ignore Properties on Marshalling](https://www.baeldung.com/jackson-ignore-properties-on-serialization) +- [Ignore Null Fields with Jackson](https://www.baeldung.com/jackson-ignore-null-fields) +- [Jackson – Change Name of Field](https://www.baeldung.com/jackson-name-of-property) +- [Jackson Unmarshalling JSON with Unknown Properties](https://www.baeldung.com/jackson-deserialize-json-unknown-properties) + +### NOTE: + +Since this is a module tied to an e-book, it should **not** be used to store the code for any further article. diff --git a/jackson-simple/pom.xml b/jackson-simple/pom.xml index 718c50ec80..23574a70a8 100644 --- a/jackson-simple/pom.xml +++ b/jackson-simple/pom.xml @@ -21,7 +21,6 @@ - org.assertj assertj-core diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/AliasBean.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/AliasBean.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/AliasBean.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/AliasBean.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/BeanWithCreator.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/BeanWithCreator.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/BeanWithCreator.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/BeanWithCreator.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/BeanWithCustomAnnotation.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/BeanWithCustomAnnotation.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/BeanWithCustomAnnotation.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/BeanWithCustomAnnotation.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/BeanWithFilter.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/BeanWithFilter.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/BeanWithFilter.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/BeanWithFilter.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/BeanWithGetter.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/BeanWithGetter.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/BeanWithGetter.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/BeanWithGetter.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/BeanWithIgnore.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/BeanWithIgnore.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/BeanWithIgnore.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/BeanWithIgnore.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/BeanWithInject.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/BeanWithInject.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/BeanWithInject.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/BeanWithInject.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/ExtendableBean.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/ExtendableBean.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/ExtendableBean.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/ExtendableBean.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/MyBean.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/MyBean.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/MyBean.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/MyBean.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/PrivateBean.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/PrivateBean.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/PrivateBean.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/PrivateBean.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/RawBean.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/RawBean.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/RawBean.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/RawBean.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/UnwrappedUser.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/UnwrappedUser.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/UnwrappedUser.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/UnwrappedUser.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/UserWithIgnoreType.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/UserWithIgnoreType.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/UserWithIgnoreType.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/UserWithIgnoreType.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/Zoo.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/Zoo.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/Zoo.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/Zoo.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/bidirection/ItemWithIdentity.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/bidirection/ItemWithIdentity.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/bidirection/ItemWithIdentity.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/bidirection/ItemWithIdentity.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/bidirection/ItemWithIgnore.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/bidirection/ItemWithIgnore.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/bidirection/ItemWithIgnore.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/bidirection/ItemWithIgnore.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/bidirection/ItemWithRef.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/bidirection/ItemWithRef.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/bidirection/ItemWithRef.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/bidirection/ItemWithRef.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/bidirection/UserWithIdentity.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/bidirection/UserWithIdentity.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/bidirection/UserWithIdentity.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/bidirection/UserWithIdentity.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/bidirection/UserWithIgnore.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/bidirection/UserWithIgnore.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/bidirection/UserWithIgnore.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/bidirection/UserWithIgnore.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/bidirection/UserWithRef.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/bidirection/UserWithRef.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/bidirection/UserWithRef.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/bidirection/UserWithRef.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/date/CustomDateDeserializer.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/date/CustomDateDeserializer.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/date/CustomDateDeserializer.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/date/CustomDateDeserializer.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/date/CustomDateSerializer.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/date/CustomDateSerializer.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/date/CustomDateSerializer.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/date/CustomDateSerializer.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/date/EventWithFormat.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/date/EventWithFormat.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/date/EventWithFormat.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/date/EventWithFormat.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/date/EventWithSerializer.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/date/EventWithSerializer.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/date/EventWithSerializer.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/date/EventWithSerializer.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/deserialization/ItemDeserializerOnClass.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/deserialization/ItemDeserializerOnClass.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/deserialization/ItemDeserializerOnClass.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/deserialization/ItemDeserializerOnClass.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/dtos/Item.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/dtos/Item.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/dtos/Item.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/dtos/Item.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/dtos/ItemWithSerializer.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/dtos/ItemWithSerializer.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/dtos/ItemWithSerializer.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/dtos/ItemWithSerializer.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/dtos/User.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/dtos/User.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/dtos/User.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/dtos/User.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/dtos/withEnum/DistanceEnumWithValue.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/dtos/withEnum/DistanceEnumWithValue.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/dtos/withEnum/DistanceEnumWithValue.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/dtos/withEnum/DistanceEnumWithValue.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/exception/UserWithRoot.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/exception/UserWithRoot.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/exception/UserWithRoot.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/exception/UserWithRoot.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/exception/UserWithRootNamespace.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/exception/UserWithRootNamespace.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/exception/UserWithRootNamespace.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/exception/UserWithRootNamespace.java diff --git a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyMixInForIgnoreType.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/ignore/MyMixInForIgnoreType.java similarity index 71% rename from jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyMixInForIgnoreType.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/ignore/MyMixInForIgnoreType.java index ce97d35c83..c016e44530 100644 --- a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyMixInForIgnoreType.java +++ b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/ignore/MyMixInForIgnoreType.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.ignore.dtos; +package com.baeldung.jackson.annotation.ignore; import com.fasterxml.jackson.annotation.JsonIgnoreType; diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/jsonview/Item.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/jsonview/Item.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/jsonview/Item.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/jsonview/Item.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/jsonview/Views.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/jsonview/Views.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/jsonview/Views.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/jsonview/Views.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/serialization/ItemSerializer.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/serialization/ItemSerializer.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/serialization/ItemSerializer.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/serialization/ItemSerializer.java diff --git a/jackson-annotations/src/main/java/com/baeldung/jackson/annotation/serialization/ItemSerializerOnClass.java b/jackson-simple/src/main/java/com/baeldung/jackson/annotation/serialization/ItemSerializerOnClass.java similarity index 100% rename from jackson-annotations/src/main/java/com/baeldung/jackson/annotation/serialization/ItemSerializerOnClass.java rename to jackson-simple/src/main/java/com/baeldung/jackson/annotation/serialization/ItemSerializerOnClass.java diff --git a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/MyDto.java b/jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDto.java similarity index 96% rename from jackson-simple/src/test/java/com/baeldung/jackson/dtos/MyDto.java rename to jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDto.java index 49cf07baea..b8fedc9c98 100644 --- a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/MyDto.java +++ b/jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDto.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.dtos; +package com.baeldung.jackson.ignore; public class MyDto { diff --git a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoIgnoreField.java b/jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoIgnoreField.java similarity index 94% rename from jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoIgnoreField.java rename to jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoIgnoreField.java index 8cbcb773cc..6880cf68fc 100644 --- a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoIgnoreField.java +++ b/jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoIgnoreField.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.ignore.dtos; +package com.baeldung.jackson.ignore; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoIgnoreFieldByName.java b/jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoIgnoreFieldByName.java similarity index 95% rename from jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoIgnoreFieldByName.java rename to jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoIgnoreFieldByName.java index 1aee31a1b3..f446096258 100644 --- a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoIgnoreFieldByName.java +++ b/jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoIgnoreFieldByName.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.ignore.dtos; +package com.baeldung.jackson.ignore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoIgnoreNull.java b/jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoIgnoreNull.java similarity index 96% rename from jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoIgnoreNull.java rename to jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoIgnoreNull.java index 75532f18c2..2fd388109c 100644 --- a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoIgnoreNull.java +++ b/jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoIgnoreNull.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.ignore.dtos; +package com.baeldung.jackson.ignore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; diff --git a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/MyDtoIncludeNonDefault.java b/jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoIncludeNonDefault.java similarity index 95% rename from jackson-simple/src/test/java/com/baeldung/jackson/dtos/MyDtoIncludeNonDefault.java rename to jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoIncludeNonDefault.java index ca03a8be62..53b9316413 100644 --- a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/MyDtoIncludeNonDefault.java +++ b/jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoIncludeNonDefault.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.dtos; +package com.baeldung.jackson.ignore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; diff --git a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoWithFilter.java b/jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoWithFilter.java similarity index 96% rename from jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoWithFilter.java rename to jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoWithFilter.java index 256b7d206d..f8e4043357 100644 --- a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/dtos/MyDtoWithFilter.java +++ b/jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoWithFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.ignore.dtos; +package com.baeldung.jackson.ignore; import com.fasterxml.jackson.annotation.JsonFilter; diff --git a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/MyDtoWithSpecialField.java b/jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoWithSpecialField.java similarity index 96% rename from jackson-simple/src/test/java/com/baeldung/jackson/dtos/MyDtoWithSpecialField.java rename to jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoWithSpecialField.java index 58293c0562..f85823fb30 100644 --- a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/MyDtoWithSpecialField.java +++ b/jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyDtoWithSpecialField.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.dtos; +package com.baeldung.jackson.ignore; public class MyDtoWithSpecialField { diff --git a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/MyMixInForIgnoreType.java b/jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyMixInForIgnoreType.java similarity index 76% rename from jackson-simple/src/test/java/com/baeldung/jackson/dtos/MyMixInForIgnoreType.java rename to jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyMixInForIgnoreType.java index ca29c98b9a..3c5dfdfad3 100644 --- a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/MyMixInForIgnoreType.java +++ b/jackson-simple/src/main/java/com/baeldung/jackson/ignore/MyMixInForIgnoreType.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.dtos; +package com.baeldung.jackson.ignore; import com.fasterxml.jackson.annotation.JsonIgnoreType; diff --git a/jackson-conversions-2/src/test/java/com/baeldung/jackson/ignorenullfields/MyDto.java b/jackson-simple/src/main/java/com/baeldung/jackson/ignorenullfields/MyDto.java similarity index 100% rename from jackson-conversions-2/src/test/java/com/baeldung/jackson/ignorenullfields/MyDto.java rename to jackson-simple/src/main/java/com/baeldung/jackson/ignorenullfields/MyDto.java diff --git a/jackson-conversions-2/src/test/java/com/baeldung/jackson/ignorenullfields/MyDtoIgnoreNull.java b/jackson-simple/src/main/java/com/baeldung/jackson/ignorenullfields/MyDtoIgnoreNull.java similarity index 100% rename from jackson-conversions-2/src/test/java/com/baeldung/jackson/ignorenullfields/MyDtoIgnoreNull.java rename to jackson-simple/src/main/java/com/baeldung/jackson/ignorenullfields/MyDtoIgnoreNull.java diff --git a/jackson-annotations/src/test/java/com/baeldung/jackson/jsonproperty/MyDto.java b/jackson-simple/src/main/java/com/baeldung/jackson/jsonproperty/MyDto.java similarity index 100% rename from jackson-annotations/src/test/java/com/baeldung/jackson/jsonproperty/MyDto.java rename to jackson-simple/src/main/java/com/baeldung/jackson/jsonproperty/MyDto.java diff --git a/jackson-annotations/src/test/java/com/baeldung/jackson/jsonproperty/MyDtoFieldNameChanged.java b/jackson-simple/src/main/java/com/baeldung/jackson/jsonproperty/MyDtoFieldNameChanged.java similarity index 100% rename from jackson-annotations/src/test/java/com/baeldung/jackson/jsonproperty/MyDtoFieldNameChanged.java rename to jackson-simple/src/main/java/com/baeldung/jackson/jsonproperty/MyDtoFieldNameChanged.java diff --git a/jackson/src/main/java/com/baeldung/jackson/objectmapper/CustomCarDeserializer.java b/jackson-simple/src/main/java/com/baeldung/jackson/objectmapper/CustomCarDeserializer.java similarity index 100% rename from jackson/src/main/java/com/baeldung/jackson/objectmapper/CustomCarDeserializer.java rename to jackson-simple/src/main/java/com/baeldung/jackson/objectmapper/CustomCarDeserializer.java diff --git a/jackson/src/main/java/com/baeldung/jackson/objectmapper/CustomCarSerializer.java b/jackson-simple/src/main/java/com/baeldung/jackson/objectmapper/CustomCarSerializer.java similarity index 100% rename from jackson/src/main/java/com/baeldung/jackson/objectmapper/CustomCarSerializer.java rename to jackson-simple/src/main/java/com/baeldung/jackson/objectmapper/CustomCarSerializer.java diff --git a/jackson/src/main/java/com/baeldung/jackson/objectmapper/dto/Car.java b/jackson-simple/src/main/java/com/baeldung/jackson/objectmapper/dto/Car.java similarity index 100% rename from jackson/src/main/java/com/baeldung/jackson/objectmapper/dto/Car.java rename to jackson-simple/src/main/java/com/baeldung/jackson/objectmapper/dto/Car.java diff --git a/jackson/src/main/java/com/baeldung/jackson/objectmapper/dto/Request.java b/jackson-simple/src/main/java/com/baeldung/jackson/objectmapper/dto/Request.java similarity index 100% rename from jackson/src/main/java/com/baeldung/jackson/objectmapper/dto/Request.java rename to jackson-simple/src/main/java/com/baeldung/jackson/objectmapper/dto/Request.java diff --git a/jackson-conversions-2/src/main/java/com/baeldung/jackson/unknownproperties/MyDto.java b/jackson-simple/src/main/java/com/baeldung/jackson/unknownproperties/MyDto.java similarity index 100% rename from jackson-conversions-2/src/main/java/com/baeldung/jackson/unknownproperties/MyDto.java rename to jackson-simple/src/main/java/com/baeldung/jackson/unknownproperties/MyDto.java diff --git a/jackson-conversions-2/src/main/java/com/baeldung/jackson/unknownproperties/MyDtoIgnoreType.java b/jackson-simple/src/main/java/com/baeldung/jackson/unknownproperties/MyDtoIgnoreType.java similarity index 100% rename from jackson-conversions-2/src/main/java/com/baeldung/jackson/unknownproperties/MyDtoIgnoreType.java rename to jackson-simple/src/main/java/com/baeldung/jackson/unknownproperties/MyDtoIgnoreType.java diff --git a/jackson-conversions-2/src/main/java/com/baeldung/jackson/unknownproperties/MyDtoIgnoreUnknown.java b/jackson-simple/src/main/java/com/baeldung/jackson/unknownproperties/MyDtoIgnoreUnknown.java similarity index 100% rename from jackson-conversions-2/src/main/java/com/baeldung/jackson/unknownproperties/MyDtoIgnoreUnknown.java rename to jackson-simple/src/main/java/com/baeldung/jackson/unknownproperties/MyDtoIgnoreUnknown.java diff --git a/jackson-annotations/src/test/java/com/baeldung/jackson/annotation/JacksonAnnotationUnitTest.java b/jackson-simple/src/test/java/com/baeldung/jackson/annotation/JacksonAnnotationUnitTest.java similarity index 99% rename from jackson-annotations/src/test/java/com/baeldung/jackson/annotation/JacksonAnnotationUnitTest.java rename to jackson-simple/src/test/java/com/baeldung/jackson/annotation/JacksonAnnotationUnitTest.java index 462b65787a..bbbb79b0a8 100644 --- a/jackson-annotations/src/test/java/com/baeldung/jackson/annotation/JacksonAnnotationUnitTest.java +++ b/jackson-simple/src/test/java/com/baeldung/jackson/annotation/JacksonAnnotationUnitTest.java @@ -20,7 +20,7 @@ import com.baeldung.jackson.annotation.bidirection.UserWithIdentity; import com.baeldung.jackson.annotation.bidirection.UserWithRef; import com.baeldung.jackson.annotation.date.EventWithFormat; import com.baeldung.jackson.annotation.date.EventWithSerializer; -import com.baeldung.jackson.ignore.dtos.MyMixInForIgnoreType; +import com.baeldung.jackson.annotation.ignore.MyMixInForIgnoreType; import com.baeldung.jackson.annotation.dtos.withEnum.DistanceEnumWithValue; import com.baeldung.jackson.annotation.exception.UserWithRoot; import com.baeldung.jackson.annotation.exception.UserWithRootNamespace; diff --git a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/withEnum/DistanceEnumWithValue.java b/jackson-simple/src/test/java/com/baeldung/jackson/dtos/withEnum/DistanceEnumWithValue.java deleted file mode 100644 index 574908523a..0000000000 --- a/jackson-simple/src/test/java/com/baeldung/jackson/dtos/withEnum/DistanceEnumWithValue.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.baeldung.jackson.annotation.dtos.withEnum; - -import com.fasterxml.jackson.annotation.JsonValue; - -public enum DistanceEnumWithValue { - KILOMETER("km", 1000), MILE("miles", 1609.34), METER("meters", 1), INCH("inches", 0.0254), CENTIMETER("cm", 0.01), MILLIMETER("mm", 0.001); - - private String unit; - private final double meters; - - private DistanceEnumWithValue(String unit, double meters) { - this.unit = unit; - this.meters = meters; - } - - @JsonValue - public double getMeters() { - return meters; - } - - public String getUnit() { - return unit; - } - - public void setUnit(String unit) { - this.unit = unit; - } - -} \ No newline at end of file diff --git a/jackson-simple/src/test/java/com/baeldung/jackson/ignore/IgnoreFieldsWithFilterUnitTest.java b/jackson-simple/src/test/java/com/baeldung/jackson/ignore/IgnoreFieldsWithFilterUnitTest.java new file mode 100644 index 0000000000..9f1da451f8 --- /dev/null +++ b/jackson-simple/src/test/java/com/baeldung/jackson/ignore/IgnoreFieldsWithFilterUnitTest.java @@ -0,0 +1,87 @@ +package com.baeldung.jackson.ignore; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.BeanPropertyWriter; +import com.fasterxml.jackson.databind.ser.FilterProvider; +import com.fasterxml.jackson.databind.ser.PropertyFilter; +import com.fasterxml.jackson.databind.ser.PropertyWriter; +import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter; +import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider; +import org.junit.Test; + +import java.io.IOException; + +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.not; +import static org.junit.Assert.assertThat; + +public class IgnoreFieldsWithFilterUnitTest { + + @Test + public final void givenTypeHasFilterThatIgnoresFieldByName_whenDtoIsSerialized_thenCorrect() throws JsonParseException, IOException { + final ObjectMapper mapper = new ObjectMapper(); + final SimpleBeanPropertyFilter theFilter = SimpleBeanPropertyFilter.serializeAllExcept("intValue"); + final FilterProvider filters = new SimpleFilterProvider().addFilter("myFilter", theFilter); + + final MyDtoWithFilter dtoObject = new MyDtoWithFilter(); + dtoObject.setIntValue(12); + + final String dtoAsString = mapper.writer(filters) + .writeValueAsString(dtoObject); + + assertThat(dtoAsString, not(containsString("intValue"))); + assertThat(dtoAsString, containsString("booleanValue")); + assertThat(dtoAsString, containsString("stringValue")); + System.out.println(dtoAsString); + } + + @Test + public final void givenTypeHasFilterThatIgnoresNegativeInt_whenDtoIsSerialized_thenCorrect() throws JsonParseException, IOException { + final PropertyFilter theFilter = new SimpleBeanPropertyFilter() { + @Override + public final void serializeAsField(final Object pojo, final JsonGenerator jgen, final SerializerProvider provider, final PropertyWriter writer) throws Exception { + if (include(writer)) { + if (!writer.getName() + .equals("intValue")) { + writer.serializeAsField(pojo, jgen, provider); + return; + } + + final int intValue = ((MyDtoWithFilter) pojo).getIntValue(); + if (intValue >= 0) { + writer.serializeAsField(pojo, jgen, provider); + } + } else if (!jgen.canOmitFields()) { // since 2.3 + writer.serializeAsOmittedField(pojo, jgen, provider); + } + } + + @Override + protected final boolean include(final BeanPropertyWriter writer) { + return true; + } + + @Override + protected final boolean include(final PropertyWriter writer) { + return true; + } + }; + final FilterProvider filters = new SimpleFilterProvider().addFilter("myFilter", theFilter); + + final MyDtoWithFilter dtoObject = new MyDtoWithFilter(); + dtoObject.setIntValue(-1); + + final ObjectMapper mapper = new ObjectMapper(); + final String dtoAsString = mapper.writer(filters) + .writeValueAsString(dtoObject); + + assertThat(dtoAsString, not(containsString("intValue"))); + assertThat(dtoAsString, containsString("booleanValue")); + assertThat(dtoAsString, containsString("stringValue")); + System.out.println(dtoAsString); + } + +} diff --git a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/JacksonSerializationIgnoreUnitTest.java b/jackson-simple/src/test/java/com/baeldung/jackson/ignore/JacksonSerializationIgnoreUnitTest.java similarity index 60% rename from jackson-annotations/src/test/java/com/baeldung/jackson/ignore/JacksonSerializationIgnoreUnitTest.java rename to jackson-simple/src/test/java/com/baeldung/jackson/ignore/JacksonSerializationIgnoreUnitTest.java index c96eef4b05..da7c45859e 100644 --- a/jackson-annotations/src/test/java/com/baeldung/jackson/ignore/JacksonSerializationIgnoreUnitTest.java +++ b/jackson-simple/src/test/java/com/baeldung/jackson/ignore/JacksonSerializationIgnoreUnitTest.java @@ -5,19 +5,9 @@ import static org.hamcrest.Matchers.not; import static org.junit.Assert.assertThat; import java.io.IOException; -import java.util.HashMap; -import java.util.Map; import org.junit.Test; -import com.baeldung.jackson.ignore.dtos.MyDto; -import com.baeldung.jackson.ignore.dtos.MyDtoIncludeNonDefault; -import com.baeldung.jackson.ignore.dtos.MyDtoWithFilter; -import com.baeldung.jackson.ignore.dtos.MyDtoWithSpecialField; -import com.baeldung.jackson.ignore.dtos.MyMixInForIgnoreType; -import com.baeldung.jackson.ignore.dtos.MyDtoIgnoreField; -import com.baeldung.jackson.ignore.dtos.MyDtoIgnoreFieldByName; -import com.baeldung.jackson.ignore.dtos.MyDtoIgnoreNull; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParseException; @@ -99,70 +89,6 @@ public class JacksonSerializationIgnoreUnitTest { System.out.println(dtoAsString); } - @Test - public final void givenTypeHasFilterThatIgnoresFieldByName_whenDtoIsSerialized_thenCorrect() throws JsonParseException, IOException { - final ObjectMapper mapper = new ObjectMapper(); - final SimpleBeanPropertyFilter theFilter = SimpleBeanPropertyFilter.serializeAllExcept("intValue"); - final FilterProvider filters = new SimpleFilterProvider().addFilter("myFilter", theFilter); - - final MyDtoWithFilter dtoObject = new MyDtoWithFilter(); - dtoObject.setIntValue(12); - - final String dtoAsString = mapper.writer(filters) - .writeValueAsString(dtoObject); - - assertThat(dtoAsString, not(containsString("intValue"))); - assertThat(dtoAsString, containsString("booleanValue")); - assertThat(dtoAsString, containsString("stringValue")); - System.out.println(dtoAsString); - } - - @Test - public final void givenTypeHasFilterThatIgnoresNegativeInt_whenDtoIsSerialized_thenCorrect() throws JsonParseException, IOException { - final PropertyFilter theFilter = new SimpleBeanPropertyFilter() { - @Override - public final void serializeAsField(final Object pojo, final JsonGenerator jgen, final SerializerProvider provider, final PropertyWriter writer) throws Exception { - if (include(writer)) { - if (!writer.getName() - .equals("intValue")) { - writer.serializeAsField(pojo, jgen, provider); - return; - } - - final int intValue = ((MyDtoWithFilter) pojo).getIntValue(); - if (intValue >= 0) { - writer.serializeAsField(pojo, jgen, provider); - } - } else if (!jgen.canOmitFields()) { // since 2.3 - writer.serializeAsOmittedField(pojo, jgen, provider); - } - } - - @Override - protected final boolean include(final BeanPropertyWriter writer) { - return true; - } - - @Override - protected final boolean include(final PropertyWriter writer) { - return true; - } - }; - final FilterProvider filters = new SimpleFilterProvider().addFilter("myFilter", theFilter); - - final MyDtoWithFilter dtoObject = new MyDtoWithFilter(); - dtoObject.setIntValue(-1); - - final ObjectMapper mapper = new ObjectMapper(); - final String dtoAsString = mapper.writer(filters) - .writeValueAsString(dtoObject); - - assertThat(dtoAsString, not(containsString("intValue"))); - assertThat(dtoAsString, containsString("booleanValue")); - assertThat(dtoAsString, containsString("stringValue")); - System.out.println(dtoAsString); - } - @Test public final void givenNullsIgnoredOnClass_whenWritingObjectWithNullField_thenIgnored() throws JsonProcessingException { final ObjectMapper mapper = new ObjectMapper(); diff --git a/jackson-conversions-2/src/test/java/com/baeldung/jackson/ignorenullfields/IgnoreNullFieldsUnitTest.java b/jackson-simple/src/test/java/com/baeldung/jackson/ignorenullfields/IgnoreNullFieldsUnitTest.java similarity index 98% rename from jackson-conversions-2/src/test/java/com/baeldung/jackson/ignorenullfields/IgnoreNullFieldsUnitTest.java rename to jackson-simple/src/test/java/com/baeldung/jackson/ignorenullfields/IgnoreNullFieldsUnitTest.java index 192fe61889..ab1d9523e7 100644 --- a/jackson-conversions-2/src/test/java/com/baeldung/jackson/ignorenullfields/IgnoreNullFieldsUnitTest.java +++ b/jackson-simple/src/test/java/com/baeldung/jackson/ignorenullfields/IgnoreNullFieldsUnitTest.java @@ -14,8 +14,6 @@ import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter; import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider; import org.junit.Test; -import java.io.IOException; - import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; import static org.junit.Assert.assertThat; diff --git a/jackson-annotations/src/test/java/com/baeldung/jackson/jsonproperty/JsonPropertyUnitTest.java b/jackson-simple/src/test/java/com/baeldung/jackson/jsonproperty/JsonPropertyUnitTest.java similarity index 98% rename from jackson-annotations/src/test/java/com/baeldung/jackson/jsonproperty/JsonPropertyUnitTest.java rename to jackson-simple/src/test/java/com/baeldung/jackson/jsonproperty/JsonPropertyUnitTest.java index 59622ff8b8..e0571465fb 100644 --- a/jackson-annotations/src/test/java/com/baeldung/jackson/jsonproperty/JsonPropertyUnitTest.java +++ b/jackson-simple/src/test/java/com/baeldung/jackson/jsonproperty/JsonPropertyUnitTest.java @@ -5,7 +5,7 @@ import static org.hamcrest.Matchers.not; import static org.junit.Assert.assertThat; import java.io.IOException; -import java.util.List; + import org.junit.Test; import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; diff --git a/jackson/src/test/java/com/baeldung/jackson/objectmapper/JavaReadWriteJsonExampleUnitTest.java b/jackson-simple/src/test/java/com/baeldung/jackson/objectmapper/JavaReadWriteJsonExampleUnitTest.java similarity index 100% rename from jackson/src/test/java/com/baeldung/jackson/objectmapper/JavaReadWriteJsonExampleUnitTest.java rename to jackson-simple/src/test/java/com/baeldung/jackson/objectmapper/JavaReadWriteJsonExampleUnitTest.java diff --git a/jackson/src/test/java/com/baeldung/jackson/objectmapper/SerializationDeserializationFeatureUnitTest.java b/jackson-simple/src/test/java/com/baeldung/jackson/objectmapper/SerializationDeserializationFeatureUnitTest.java similarity index 100% rename from jackson/src/test/java/com/baeldung/jackson/objectmapper/SerializationDeserializationFeatureUnitTest.java rename to jackson-simple/src/test/java/com/baeldung/jackson/objectmapper/SerializationDeserializationFeatureUnitTest.java diff --git a/jackson-simple/src/test/java/com/baeldung/jackson/serialization/ItemSerializerOnClass.java b/jackson-simple/src/test/java/com/baeldung/jackson/serialization/ItemSerializerOnClass.java deleted file mode 100644 index 1fdf44e17c..0000000000 --- a/jackson-simple/src/test/java/com/baeldung/jackson/serialization/ItemSerializerOnClass.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.jackson.serialization; - -import java.io.IOException; - -import com.baeldung.jackson.dtos.ItemWithSerializer; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; - -public class ItemSerializerOnClass extends StdSerializer { - - private static final long serialVersionUID = -1760959597313610409L; - - public ItemSerializerOnClass() { - this(null); - } - - public ItemSerializerOnClass(final Class t) { - super(t); - } - - @Override - public final void serialize(final ItemWithSerializer value, final JsonGenerator jgen, final SerializerProvider provider) throws IOException, JsonProcessingException { - jgen.writeStartObject(); - jgen.writeNumberField("id", value.id); - jgen.writeStringField("itemName", value.itemName); - jgen.writeNumberField("owner", value.owner.id); - jgen.writeEndObject(); - } - -} \ No newline at end of file diff --git a/jackson-conversions-2/src/test/java/com/baeldung/jackson/unknownproperties/UnknownPropertiesUnitTest.java b/jackson-simple/src/test/java/com/baeldung/jackson/unknownproperties/UnknownPropertiesUnitTest.java similarity index 100% rename from jackson-conversions-2/src/test/java/com/baeldung/jackson/unknownproperties/UnknownPropertiesUnitTest.java rename to jackson-simple/src/test/java/com/baeldung/jackson/unknownproperties/UnknownPropertiesUnitTest.java diff --git a/jackson/src/test/resources/json_car.json b/jackson-simple/src/test/resources/json_car.json similarity index 100% rename from jackson/src/test/resources/json_car.json rename to jackson-simple/src/test/resources/json_car.json diff --git a/jackson/.gitignore b/jackson/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/jackson/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -*.class - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* - -# Packaged files # -*.jar -*.war -*.ear \ No newline at end of file diff --git a/jackson/README.md b/jackson/README.md index 72e82c26db..bcf8c3036f 100644 --- a/jackson/README.md +++ b/jackson/README.md @@ -7,13 +7,9 @@ This module contains articles about Jackson. The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: - -- [Jackson – Custom Serializer](https://www.baeldung.com/jackson-custom-serialization) -- [Getting Started with Custom Deserialization in Jackson](https://www.baeldung.com/jackson-deserialization) -- [Jackson JSON Tutorial](https://www.baeldung.com/jackson) -- [Jackson vs Gson](https://www.baeldung.com/jackson-vs-gson) - [Using Optional with Jackson](https://www.baeldung.com/jackson-optional) -- [Serialize Only Fields that meet a Custom Criteria with Jackson](https://www.baeldung.com/jackson-serialize-field-custom-criteria) -- [Intro to the Jackson ObjectMapper](https://www.baeldung.com/jackson-object-mapper-tutorial) +- [Compare Two JSON Objects with Jackson](https://www.baeldung.com/jackson-compare-two-json-objects) +- [Jackson vs Gson](https://www.baeldung.com/jackson-vs-gson) +- [Jackson JSON Tutorial](https://www.baeldung.com/jackson) - [Inheritance with Jackson](https://www.baeldung.com/jackson-inheritance) -- More articles: [[next -->]](/../jackson-2) +- [Working with Tree Model Nodes in Jackson](https://www.baeldung.com/jackson-json-node-tree-model) diff --git a/jackson/src/main/java/com/baeldung/jackson/jacksonvsgson/ActorJackson.java b/jackson/src/main/java/com/baeldung/jackson/jacksonvsgson/ActorJackson.java new file mode 100644 index 0000000000..b4b6d99447 --- /dev/null +++ b/jackson/src/main/java/com/baeldung/jackson/jacksonvsgson/ActorJackson.java @@ -0,0 +1,61 @@ +package com.baeldung.jackson.jacksonvsgson; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Locale; +import java.util.TimeZone; + +public class ActorJackson { + + private String imdbId; + private Date dateOfBirth; + private List filmography; + + public ActorJackson() { + super(); + } + + public ActorJackson(String imdbId, Date dateOfBirth, List filmography) { + super(); + this.imdbId = imdbId; + this.dateOfBirth = dateOfBirth; + this.filmography = filmography; + } + + @Override + public String toString() { + return "ActorJackson [imdbId=" + imdbId + ", dateOfBirth=" + formatDateOfBirth() + ", filmography=" + filmography + "]"; + } + + public String getImdbId() { + return imdbId; + } + + public void setImdbId(String imdbId) { + this.imdbId = imdbId; + } + + public Date getDateOfBirth() { + return dateOfBirth; + } + + public void setDateOfBirth(Date dateOfBirth) { + this.dateOfBirth = dateOfBirth; + } + + public List getFilmography() { + return filmography; + } + + public void setFilmography(List filmography) { + this.filmography = filmography; + } + + private String formatDateOfBirth() { + final DateFormat formatter = new SimpleDateFormat("EEE MMM dd hh:mm:ss zzz yyyy", Locale.US); + formatter.setTimeZone(TimeZone.getTimeZone("GMT")); + return formatter.format(dateOfBirth); + } +} diff --git a/jackson/src/main/java/com/baeldung/jackson/serialization/ActorJacksonSerializer.java b/jackson/src/main/java/com/baeldung/jackson/jacksonvsgson/ActorJacksonSerializer.java similarity index 92% rename from jackson/src/main/java/com/baeldung/jackson/serialization/ActorJacksonSerializer.java rename to jackson/src/main/java/com/baeldung/jackson/jacksonvsgson/ActorJacksonSerializer.java index 2340de5957..837c837cf5 100644 --- a/jackson/src/main/java/com/baeldung/jackson/serialization/ActorJacksonSerializer.java +++ b/jackson/src/main/java/com/baeldung/jackson/jacksonvsgson/ActorJacksonSerializer.java @@ -1,11 +1,9 @@ -package com.baeldung.jackson.serialization; +package com.baeldung.jackson.jacksonvsgson; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.stream.Collectors; -import com.baeldung.jackson.entities.ActorJackson; - import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.std.StdSerializer; diff --git a/jackson/src/main/java/com/baeldung/jackson/jacksonvsgson/Movie.java b/jackson/src/main/java/com/baeldung/jackson/jacksonvsgson/Movie.java new file mode 100644 index 0000000000..070d1bc2d4 --- /dev/null +++ b/jackson/src/main/java/com/baeldung/jackson/jacksonvsgson/Movie.java @@ -0,0 +1,50 @@ +package com.baeldung.jackson.jacksonvsgson; + +import java.util.List; + +public class Movie { + + private String imdbId; + private String director; + private List actors; + + public Movie(String imdbId, String director, List actors) { + super(); + this.imdbId = imdbId; + this.director = director; + this.actors = actors; + } + + public Movie() { + super(); + } + + @Override + public String toString() { + return "Movie [imdbId=" + imdbId + ", director=" + director + ", actors=" + actors + "]"; + } + + public String getImdbId() { + return imdbId; + } + + public void setImdbId(String imdbId) { + this.imdbId = imdbId; + } + + public String getDirector() { + return director; + } + + public void setDirector(String director) { + this.director = director; + } + + public List getActors() { + return actors; + } + + public void setActors(List actors) { + this.actors = actors; + } +} \ No newline at end of file diff --git a/jackson/src/main/java/com/baeldung/jackson/entities/MovieWithNullValue.java b/jackson/src/main/java/com/baeldung/jackson/jacksonvsgson/MovieWithNullValue.java similarity index 95% rename from jackson/src/main/java/com/baeldung/jackson/entities/MovieWithNullValue.java rename to jackson/src/main/java/com/baeldung/jackson/jacksonvsgson/MovieWithNullValue.java index 4b31196ff9..a0b013cfc3 100644 --- a/jackson/src/main/java/com/baeldung/jackson/entities/MovieWithNullValue.java +++ b/jackson/src/main/java/com/baeldung/jackson/jacksonvsgson/MovieWithNullValue.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.entities; +package com.baeldung.jackson.jacksonvsgson; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/jackson-2/src/main/java/com/baeldung/jackson/node/JsonNodeIterator.java b/jackson/src/main/java/com/baeldung/jackson/node/JsonNodeIterator.java similarity index 75% rename from jackson-2/src/main/java/com/baeldung/jackson/node/JsonNodeIterator.java rename to jackson/src/main/java/com/baeldung/jackson/node/JsonNodeIterator.java index f582772587..dc1aa35aec 100644 --- a/jackson-2/src/main/java/com/baeldung/jackson/node/JsonNodeIterator.java +++ b/jackson/src/main/java/com/baeldung/jackson/node/JsonNodeIterator.java @@ -44,19 +44,19 @@ public class JsonNodeIterator { } -private void addFieldNameToYaml(StringBuilder yaml, String fieldName, int depth, boolean isFirstInArray) { - if (yaml.length()>0) { - yaml.append(NEW_LINE); - int requiredDepth = (isFirstInArray) ? depth-1 : depth; - for(int i = 0; i < requiredDepth; i++) { - yaml.append(YAML_PREFIX); - } - if (isFirstInArray) { - yaml.append(ARRAY_PREFIX); + private void addFieldNameToYaml(StringBuilder yaml, String fieldName, int depth, boolean isFirstInArray) { + if (yaml.length()>0) { + yaml.append(NEW_LINE); + int requiredDepth = (isFirstInArray) ? depth-1 : depth; + for(int i = 0; i < requiredDepth; i++) { + yaml.append(YAML_PREFIX); + } + if (isFirstInArray) { + yaml.append(ARRAY_PREFIX); + } } + yaml.append(fieldName); + yaml.append(FIELD_DELIMITER); } - yaml.append(fieldName); - yaml.append(FIELD_DELIMITER); -} } diff --git a/jackson/src/main/java/com/baeldung/jackson/miscellaneous/mixin/Book.java b/jackson/src/main/java/com/baeldung/jackson/optionalwithjackson/Book.java similarity index 89% rename from jackson/src/main/java/com/baeldung/jackson/miscellaneous/mixin/Book.java rename to jackson/src/main/java/com/baeldung/jackson/optionalwithjackson/Book.java index fb961efe85..5b83b7efc3 100644 --- a/jackson/src/main/java/com/baeldung/jackson/miscellaneous/mixin/Book.java +++ b/jackson/src/main/java/com/baeldung/jackson/optionalwithjackson/Book.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.miscellaneous.mixin; +package com.baeldung.jackson.optionalwithjackson; import java.util.Optional; diff --git a/jackson/src/test/java/com/baeldung/jackson/deserialization/ItemDeserializerOnClass.java b/jackson/src/test/java/com/baeldung/jackson/deserialization/ItemDeserializerOnClass.java deleted file mode 100644 index eaba9a7173..0000000000 --- a/jackson/src/test/java/com/baeldung/jackson/deserialization/ItemDeserializerOnClass.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.baeldung.jackson.deserialization; - -import java.io.IOException; - -import com.baeldung.jackson.dtos.ItemWithSerializer; -import com.baeldung.jackson.dtos.User; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.deser.std.StdDeserializer; -import com.fasterxml.jackson.databind.node.IntNode; - -public class ItemDeserializerOnClass extends StdDeserializer { - - private static final long serialVersionUID = 5579141241817332594L; - - public ItemDeserializerOnClass() { - this(null); - } - - public ItemDeserializerOnClass(final Class vc) { - super(vc); - } - - /** - * {"id":1,"itemNr":"theItem","owner":2} - */ - @Override - public ItemWithSerializer deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException, JsonProcessingException { - final JsonNode node = jp.getCodec() - .readTree(jp); - final int id = (Integer) ((IntNode) node.get("id")).numberValue(); - final String itemName = node.get("itemName") - .asText(); - final int userId = (Integer) ((IntNode) node.get("owner")).numberValue(); - - return new ItemWithSerializer(id, itemName, new User(userId, null)); - } - -} \ No newline at end of file diff --git a/jackson/src/test/java/com/baeldung/jackson/deserialization/JacksonDeserializeUnitTest.java b/jackson/src/test/java/com/baeldung/jackson/jacksonvsgson/JacksonDeserializeUnitTest.java similarity index 95% rename from jackson/src/test/java/com/baeldung/jackson/deserialization/JacksonDeserializeUnitTest.java rename to jackson/src/test/java/com/baeldung/jackson/jacksonvsgson/JacksonDeserializeUnitTest.java index dc055a8f9a..b6b2f44c42 100644 --- a/jackson/src/test/java/com/baeldung/jackson/deserialization/JacksonDeserializeUnitTest.java +++ b/jackson/src/test/java/com/baeldung/jackson/jacksonvsgson/JacksonDeserializeUnitTest.java @@ -1,9 +1,8 @@ -package com.baeldung.jackson.deserialization; +package com.baeldung.jackson.jacksonvsgson; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; -import com.baeldung.jackson.entities.Movie; import org.junit.Test; import com.fasterxml.jackson.databind.ObjectMapper; import static org.junit.Assert.assertEquals; diff --git a/jackson/src/test/java/com/baeldung/jackson/serialization/JacksonSerializeUnitTest.java b/jackson/src/test/java/com/baeldung/jackson/jacksonvsgson/JacksonSerializeUnitTest.java similarity index 93% rename from jackson/src/test/java/com/baeldung/jackson/serialization/JacksonSerializeUnitTest.java rename to jackson/src/test/java/com/baeldung/jackson/jacksonvsgson/JacksonSerializeUnitTest.java index a003c5b526..aff01cb52a 100644 --- a/jackson/src/test/java/com/baeldung/jackson/serialization/JacksonSerializeUnitTest.java +++ b/jackson/src/test/java/com/baeldung/jackson/jacksonvsgson/JacksonSerializeUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.serialization; +package com.baeldung.jackson.jacksonvsgson; import java.io.IOException; import java.text.ParseException; @@ -6,9 +6,6 @@ import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.TimeZone; -import com.baeldung.jackson.entities.ActorJackson; -import com.baeldung.jackson.entities.Movie; -import com.baeldung.jackson.entities.MovieWithNullValue; import org.junit.Assert; import org.junit.Test; diff --git a/jackson-2/src/test/java/com/baeldung/jackson/json/compare/JsonCompareUnitTest.java b/jackson/src/test/java/com/baeldung/jackson/jsoncompare/JsonCompareUnitTest.java similarity index 99% rename from jackson-2/src/test/java/com/baeldung/jackson/json/compare/JsonCompareUnitTest.java rename to jackson/src/test/java/com/baeldung/jackson/jsoncompare/JsonCompareUnitTest.java index 03d7c63e36..8c6b6031c3 100644 --- a/jackson-2/src/test/java/com/baeldung/jackson/json/compare/JsonCompareUnitTest.java +++ b/jackson/src/test/java/com/baeldung/jackson/jsoncompare/JsonCompareUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.json.compare; +package com.baeldung.jackson.jsoncompare; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; diff --git a/jackson-2/src/test/java/com/baeldung/jackson/node/ExampleStructure.java b/jackson/src/test/java/com/baeldung/jackson/node/ExampleStructure.java similarity index 100% rename from jackson-2/src/test/java/com/baeldung/jackson/node/ExampleStructure.java rename to jackson/src/test/java/com/baeldung/jackson/node/ExampleStructure.java diff --git a/jackson-2/src/test/java/com/baeldung/jackson/node/JsonNodeIteratorUnitTest.java b/jackson/src/test/java/com/baeldung/jackson/node/JsonNodeIteratorUnitTest.java similarity index 100% rename from jackson-2/src/test/java/com/baeldung/jackson/node/JsonNodeIteratorUnitTest.java rename to jackson/src/test/java/com/baeldung/jackson/node/JsonNodeIteratorUnitTest.java diff --git a/jackson-2/src/test/java/com/baeldung/jackson/node/NodeBean.java b/jackson/src/test/java/com/baeldung/jackson/node/NodeBean.java similarity index 100% rename from jackson-2/src/test/java/com/baeldung/jackson/node/NodeBean.java rename to jackson/src/test/java/com/baeldung/jackson/node/NodeBean.java diff --git a/jackson-2/src/test/java/com/baeldung/jackson/node/NodeOperationUnitTest.java b/jackson/src/test/java/com/baeldung/jackson/node/NodeOperationUnitTest.java similarity index 100% rename from jackson-2/src/test/java/com/baeldung/jackson/node/NodeOperationUnitTest.java rename to jackson/src/test/java/com/baeldung/jackson/node/NodeOperationUnitTest.java diff --git a/jackson/src/test/java/com/baeldung/jackson/miscellaneous/mixin/OptionalTypeUnitTest.java b/jackson/src/test/java/com/baeldung/jackson/optionalwithjackson/OptionalTypeUnitTest.java similarity index 97% rename from jackson/src/test/java/com/baeldung/jackson/miscellaneous/mixin/OptionalTypeUnitTest.java rename to jackson/src/test/java/com/baeldung/jackson/optionalwithjackson/OptionalTypeUnitTest.java index dc807a84b8..ed9d53b003 100644 --- a/jackson/src/test/java/com/baeldung/jackson/miscellaneous/mixin/OptionalTypeUnitTest.java +++ b/jackson/src/test/java/com/baeldung/jackson/optionalwithjackson/OptionalTypeUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.miscellaneous.mixin; +package com.baeldung.jackson.optionalwithjackson; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/jackson/src/test/java/com/baeldung/jackson/sandbox/SandboxUnitTest.java b/jackson/src/test/java/com/baeldung/jackson/sandbox/SandboxUnitTest.java index 6f22e2fa01..fca8a2461e 100644 --- a/jackson/src/test/java/com/baeldung/jackson/sandbox/SandboxUnitTest.java +++ b/jackson/src/test/java/com/baeldung/jackson/sandbox/SandboxUnitTest.java @@ -26,6 +26,4 @@ public class SandboxUnitTest { System.err.println(serialized); } - // - } diff --git a/jackson/src/test/java/com/baeldung/jackson/test/UnitTestSuite.java b/jackson/src/test/java/com/baeldung/jackson/test/UnitTestSuite.java index af99fed5d8..6096bc9961 100644 --- a/jackson/src/test/java/com/baeldung/jackson/test/UnitTestSuite.java +++ b/jackson/src/test/java/com/baeldung/jackson/test/UnitTestSuite.java @@ -7,9 +7,7 @@ import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({ // @formatter:off - JacksonDeserializationUnitTest.class - ,JacksonDeserializationUnitTest.class - ,JacksonPrettyPrintUnitTest.class + JacksonPrettyPrintUnitTest.class ,SandboxUnitTest.class }) // @formatter:on public class UnitTestSuite { diff --git a/jackson/src/test/java/com/baeldung/jackson/try1/JacksonDeserializationUnitTest.java b/jackson/src/test/java/com/baeldung/jackson/try1/JacksonDeserializationUnitTest.java deleted file mode 100644 index 9fc195a8aa..0000000000 --- a/jackson/src/test/java/com/baeldung/jackson/try1/JacksonDeserializationUnitTest.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.jackson.try1; - -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; - -import java.io.IOException; - -import com.baeldung.jackson.dtos.ItemWithSerializer; -import org.junit.Test; - -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -public class JacksonDeserializationUnitTest { - - @Test - public final void givenDeserializerIsOnClass_whenDeserializingCustomRepresentation_thenCorrect() throws JsonParseException, JsonMappingException, IOException { - final String json = "{\"id\":1,\"itemName\":\"theItem\",\"owner\":2}"; - - final ItemWithSerializer readValue = new ObjectMapper().readValue(json, ItemWithSerializer.class); - assertThat(readValue, notNullValue()); - } - -} diff --git a/jackson/src/test/resources/.gitignore b/jackson/src/test/resources/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/jackson/src/test/resources/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -*.class - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* - -# Packaged files # -*.jar -*.war -*.ear \ No newline at end of file diff --git a/jackson-2/src/test/resources/node_example.json b/jackson/src/test/resources/node_example.json similarity index 100% rename from jackson-2/src/test/resources/node_example.json rename to jackson/src/test/resources/node_example.json diff --git a/pom.xml b/pom.xml index 05999f0926..b15b598afd 100644 --- a/pom.xml +++ b/pom.xml @@ -499,12 +499,12 @@ immutables jackson - jackson-2 jackson-simple jackson-annotations jackson-exceptions jackson-conversions jackson-conversions-2 + jackson-custom-conversions java-collections-conversions java-collections-conversions-2 java-collections-maps @@ -1132,12 +1132,12 @@ immutables jackson - jackson-2 jackson-simple jackson-annotations jackson-exceptions jackson-conversions jackson-conversions-2 + jackson-custom-conversions java-collections-conversions java-collections-conversions-2 java-collections-maps