diff --git a/src/main/java/org/eclipse/yasson/internal/model/PropertyModel.java b/src/main/java/org/eclipse/yasson/internal/model/PropertyModel.java
index 53d195d..043df6b 100644
--- a/src/main/java/org/eclipse/yasson/internal/model/PropertyModel.java
+++ b/src/main/java/org/eclipse/yasson/internal/model/PropertyModel.java
@@ -17,9 +17,14 @@
 import org.eclipse.yasson.internal.ReflectionUtils;
 import org.eclipse.yasson.internal.components.AdapterBinding;
 import org.eclipse.yasson.internal.components.SerializerBinding;
-import org.eclipse.yasson.internal.serializer.*;
 import org.eclipse.yasson.internal.model.customization.PropertyCustomization;
 import org.eclipse.yasson.internal.model.customization.PropertyCustomizationBuilder;
+import org.eclipse.yasson.internal.serializer.AdaptedObjectSerializer;
+import org.eclipse.yasson.internal.serializer.DefaultSerializers;
+import org.eclipse.yasson.internal.serializer.JsonbDateFormatter;
+import org.eclipse.yasson.internal.serializer.JsonbNumberFormatter;
+import org.eclipse.yasson.internal.serializer.SerializerProviderWrapper;
+import org.eclipse.yasson.internal.serializer.UserSerializerSerializer;
 
 import javax.json.bind.config.PropertyNamingStrategy;
 import javax.json.bind.serializer.JsonbSerializer;
diff --git a/src/main/java/org/eclipse/yasson/internal/serializer/AdaptedObjectSerializer.java b/src/main/java/org/eclipse/yasson/internal/serializer/AdaptedObjectSerializer.java
index 96ce82a..17ee746 100644
--- a/src/main/java/org/eclipse/yasson/internal/serializer/AdaptedObjectSerializer.java
+++ b/src/main/java/org/eclipse/yasson/internal/serializer/AdaptedObjectSerializer.java
@@ -59,6 +59,10 @@
             if (context.addProcessedObject(obj)) {
                 final JsonbAdapter<T, A> adapter = (JsonbAdapter<T, A>) adapterInfo.getAdapter();
                 A adapted = adapter.adaptToJson(obj);
+                if (adapted == null) {
+                    generator.writeNull();
+                    return;
+                }
                 final JsonbSerializer<A> serializer = resolveSerializer((Marshaller) ctx, adapted);
                 serializer.serialize(adapted, generator, ctx);
             } else {
diff --git a/src/test/java/org/eclipse/yasson/adapters/AdaptersTest.java b/src/test/java/org/eclipse/yasson/adapters/AdaptersTest.java
index 41b763c..17676ad 100644
--- a/src/test/java/org/eclipse/yasson/adapters/AdaptersTest.java
+++ b/src/test/java/org/eclipse/yasson/adapters/AdaptersTest.java
@@ -24,8 +24,10 @@
 import org.eclipse.yasson.adapters.model.GenericBox;
 import org.eclipse.yasson.adapters.model.IntegerListToStringAdapter;
 import org.eclipse.yasson.adapters.model.JsonObjectPojo;
+import org.eclipse.yasson.adapters.model.ReturnNullAdapter;
 import org.eclipse.yasson.adapters.model.SupertypeAdapterPojo;
 import org.eclipse.yasson.adapters.model.UUIDContainer;
+import org.eclipse.yasson.defaultmapping.generics.model.ScalarValueWrapper;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -33,6 +35,7 @@
 import javax.json.bind.JsonbBuilder;
 import javax.json.bind.JsonbConfig;
 import javax.json.bind.adapter.JsonbAdapter;
+import java.lang.reflect.Type;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -437,6 +440,22 @@
     }
 
     @Test
+    public void testAdapterReturningNull() {
+        Jsonb jsonb = JsonbBuilder.create(new JsonbConfig().withAdapters(new ReturnNullAdapter()).withNullValues(true));
+
+        ScalarValueWrapper<Number> wrapper = new ScalarValueWrapper<>();
+        wrapper.setValue(10);
+        Type type = new TestTypeToken<ScalarValueWrapper<Number>>() {
+        }.getType();
+        String json = jsonb.toJson(wrapper, type);
+
+        Assert.assertEquals("{\"value\":null}", json);
+
+        ScalarValueWrapper<Number> result = jsonb.fromJson("{\"value\":null}", type);
+        Assert.assertNull(result.getValue());
+    }
+
+    @Test
     public void testAdaptUUID() {
         jsonb = JsonbBuilder.create();
         UUIDContainer pojo = new UUIDContainer();
diff --git a/src/test/java/org/eclipse/yasson/adapters/model/ReturnNullAdapter.java b/src/test/java/org/eclipse/yasson/adapters/model/ReturnNullAdapter.java
new file mode 100644
index 0000000..60e9056
--- /dev/null
+++ b/src/test/java/org/eclipse/yasson/adapters/model/ReturnNullAdapter.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ ******************************************************************************/
+package org.eclipse.yasson.adapters.model;
+
+import javax.json.bind.adapter.JsonbAdapter;
+
+public class ReturnNullAdapter implements JsonbAdapter<Number, String> {
+    @Override
+    public String adaptToJson(Number obj) throws Exception {
+        return null;
+    }
+
+    @Override
+    public Number adaptFromJson(String obj) throws Exception {
+        return null;
+    }
+}
diff --git a/src/test/java/org/eclipse/yasson/customization/JsonbNillableTest.java b/src/test/java/org/eclipse/yasson/customization/JsonbNillableTest.java
index c0b52b9..5e3c187 100644
--- a/src/test/java/org/eclipse/yasson/customization/JsonbNillableTest.java
+++ b/src/test/java/org/eclipse/yasson/customization/JsonbNillableTest.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2016, 2017 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018 Oracle and/or its affiliates. All rights reserved.
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
  * which accompanies this distribution.
@@ -13,7 +13,11 @@
 
 package org.eclipse.yasson.customization;
 
-import org.eclipse.yasson.customization.model.*;
+import org.eclipse.yasson.customization.model.JsonbNillableClassSecondLevel;
+import org.eclipse.yasson.customization.model.JsonbNillableOverriddenWithJsonbProperty;
+import org.eclipse.yasson.customization.model.JsonbNillableOverridesClass;
+import org.eclipse.yasson.customization.model.JsonbNillableOverridesInterface;
+import org.eclipse.yasson.customization.model.JsonbNillableValue;
 import org.eclipse.yasson.customization.model.packagelevelannotations.JsonbNillablePackageLevel;
 import org.eclipse.yasson.customization.model.packagelevelannotations.PackageLevelOverriddenWithClassLevel;
 import org.eclipse.yasson.defaultmapping.generics.model.ScalarValueWrapper;
