diff --git a/serializers/json/src/main/java/org/onosproject/yang/serializers/json/DecoderUtils.java b/serializers/json/src/main/java/org/onosproject/yang/serializers/json/DecoderUtils.java
index 1e91cd7..db54520 100644
--- a/serializers/json/src/main/java/org/onosproject/yang/serializers/json/DecoderUtils.java
+++ b/serializers/json/src/main/java/org/onosproject/yang/serializers/json/DecoderUtils.java
@@ -51,10 +51,12 @@
         DataNode.Builder dataNodeBuilder = SerializerHelper.
                 initializeDataNode(context);
 
-        JsonWalker jsonWalker = new DefaultJsonWalker(dataNodeBuilder);
+        DefaultJsonWalker jsonWalker = new DefaultJsonWalker(dataNodeBuilder);
+        // FIXME: Handle scenario wherein there are multiple data nodes are
+        // there at root level.
         jsonWalker.walkJsonNode(null, rootNode);
-
-        return dataNodeBuilder.build();
+        // returning the updated data node builder
+        return jsonWalker.rootBuilder().build();
     }
 
     /**
@@ -76,9 +78,11 @@
         DataNode.Builder dataNodeBuilder = SerializerHelper.
                 initializeDataNode(ridBuilder);
 
-        JsonWalker jsonWalker = new DefaultJsonWalker(dataNodeBuilder);
+        DefaultJsonWalker jsonWalker = new DefaultJsonWalker(dataNodeBuilder);
+        // FIXME: Handle scenario wherein there are multiple data nodes are
+        // there at root level.
         jsonWalker.walkJsonNode(null, rootNode);
-
-        return dataNodeBuilder.build();
+        // returning the updated data node builder
+        return jsonWalker.rootBuilder().build();
     }
 }
diff --git a/serializers/json/src/main/java/org/onosproject/yang/serializers/json/DefaultJsonWalker.java b/serializers/json/src/main/java/org/onosproject/yang/serializers/json/DefaultJsonWalker.java
index 3c2c4b4..eaa4bdf 100644
--- a/serializers/json/src/main/java/org/onosproject/yang/serializers/json/DefaultJsonWalker.java
+++ b/serializers/json/src/main/java/org/onosproject/yang/serializers/json/DefaultJsonWalker.java
@@ -16,14 +16,15 @@
 
 package org.onosproject.yang.serializers.json;
 
-import java.util.Iterator;
-import java.util.Map;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.JsonNodeType;
 import org.onosproject.yang.model.DataNode;
 import org.onosproject.yang.runtime.helperutils.SerializerHelper;
 
+import java.util.Iterator;
+import java.util.Map;
+
 import static org.onosproject.yang.model.DataNode.Type.MULTI_INSTANCE_LEAF_VALUE_NODE;
 import static org.onosproject.yang.model.DataNode.Type.MULTI_INSTANCE_NODE;
 import static org.onosproject.yang.model.DataNode.Type.SINGLE_INSTANCE_LEAF_VALUE_NODE;
@@ -46,12 +47,24 @@
         dataNodeBuilder = db;
     }
 
+    /**
+     * Returns the root data node builder.
+     *
+     * @return data node builder
+     */
+    public DataNode.Builder rootBuilder() {
+        return dataNodeBuilder;
+    }
+
     @Override
     public void walkJsonNode(String fieldName, JsonNode jsonNode) {
         if (!jsonNode.isContainerNode()) {
             //the node has no children, so add it as leaf node to the data tree.
             addLeafNodeToDataTree(fieldName, jsonNode);
-            dataNodeBuilder = SerializerHelper.exitDataNode(dataNodeBuilder);
+            // this is to avoid exit node for top level node
+            if (dataNodeBuilder.parent() != null) {
+                dataNodeBuilder = SerializerHelper.exitDataNode(dataNodeBuilder);
+            }
             return;
         }
 
@@ -83,7 +96,10 @@
                 walkJsonNode(null, element);
 
                 // We are done with this array element.
-                dataNodeBuilder = SerializerHelper.exitDataNode(dataNodeBuilder);
+                // this is to avoid exit node for top level node
+                if (dataNodeBuilder.parent() != null) {
+                    dataNodeBuilder = SerializerHelper.exitDataNode(dataNodeBuilder);
+                }
             }
 
             // We are done with this array node.
@@ -114,7 +130,7 @@
             // SerializerHelper.exitDataNode(dataNodeBuilder);
         }
 
-        if (fieldName != null) {
+        if (fieldName != null && dataNodeBuilder.parent() != null) {
             // move up since we finish creating a container node.
             dataNodeBuilder = SerializerHelper.exitDataNode(dataNodeBuilder);
         }
