diff --git a/serializers/json/src/test/java/org/onosproject/yang/serializers/json/JsonSerializerTest.java b/serializers/json/src/test/java/org/onosproject/yang/serializers/json/JsonSerializerTest.java
index 6d4b165..b2025bd 100644
--- a/serializers/json/src/test/java/org/onosproject/yang/serializers/json/JsonSerializerTest.java
+++ b/serializers/json/src/test/java/org/onosproject/yang/serializers/json/JsonSerializerTest.java
@@ -16,6 +16,8 @@
 
 package org.onosproject.yang.serializers.json;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.apache.commons.io.IOUtils;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -25,10 +27,15 @@
 import org.onosproject.yang.model.LeafNode;
 import org.onosproject.yang.model.NodeKey;
 import org.onosproject.yang.model.ResourceData;
+import org.onosproject.yang.model.ResourceId;
 import org.onosproject.yang.model.SchemaId;
 import org.onosproject.yang.runtime.CompositeData;
 import org.onosproject.yang.runtime.CompositeStream;
+import org.onosproject.yang.runtime.DefaultCompositeData;
 import org.onosproject.yang.runtime.DefaultCompositeStream;
+import org.onosproject.yang.runtime.DefaultResourceData;
+import org.onosproject.yang.runtime.DefaultRuntimeContext;
+import org.onosproject.yang.runtime.RuntimeContext;
 import org.onosproject.yang.runtime.YangSerializer;
 import org.onosproject.yang.runtime.YangSerializerContext;
 
@@ -137,6 +144,41 @@
         assertEquals(WRONG_STRUCTURE, expectString, convertInputStreamToString(inputStream));
     }
 
+    @Test
+    public void demo1Test() {
+        String path = "src/test/resources/test.json";
+        // decode
+        DefaultCompositeStream external =
+                new DefaultCompositeStream("demo1:device", parseInput(path));
+        CompositeData compositeData = jsonSerializer.decode(external, context);
+        ResourceData resourceData = compositeData.resourceData();
+        ResourceId rid = resourceData.resourceId();
+        DataNode rootNode = resourceData.dataNodes().get(0);
+
+        // encode
+        RuntimeContext.Builder runtimeContextBuilder = DefaultRuntimeContext.builder();
+        runtimeContextBuilder.setDataFormat("JSON");
+        DefaultResourceData.Builder resourceDataBuilder = DefaultResourceData.builder();
+        resourceDataBuilder.addDataNode(rootNode);
+        resourceDataBuilder.resourceId(rid);
+
+        ResourceData resourceDataOutput = resourceDataBuilder.build();
+        DefaultCompositeData.Builder compositeDataBuilder = DefaultCompositeData.builder();
+        compositeDataBuilder.resourceData(resourceDataOutput);
+        CompositeData compositeData1 = compositeDataBuilder.build();
+        // CompositeData --- YangRuntimeService ---> CompositeStream.
+        CompositeStream compositeStreamOutPut = jsonSerializer.encode(compositeData1,
+                                                                      context);
+        InputStream inputStreamOutput = compositeStreamOutPut.resourceData();
+        ObjectNode rootNodeOutput;
+        ObjectMapper mapper = new ObjectMapper();
+        try {
+            rootNodeOutput = (ObjectNode) mapper.readTree(inputStreamOutput);
+        } catch (IOException e) {
+            System.out.println("inputstream failed to parse");
+        }
+    }
+
     /**
      * Reads JSON contents from file path and returns input stream.
      *
diff --git a/serializers/json/src/test/resources/demo1.json b/serializers/json/src/test/resources/demo1.json
new file mode 100644
index 0000000..77714fd
--- /dev/null
+++ b/serializers/json/src/test/resources/demo1.json
@@ -0,0 +1,35 @@
+{
+
+    "device": [
+      {
+        "deviceid": "string1-deviceid",
+        "Customs-supervisor": "string2",
+        "Merchandiser-supervisor": "string3",
+        "Warehouse-supervisor": [
+          "string4.1",
+          "string4.2",
+          "string4.3"
+        ],
+        "Trading-supervisor": "string4",
+        "Employee-id": [
+          "string4.1",
+          "string4.2",
+          "string4.3"
+        ],
+        "Material-supervisor": [
+          {
+            "name": "string5",
+            "departmentId": "string6"
+          }
+        ],
+        "Purchasing-supervisor": {
+          "purchasing-specialist": "string7",
+          "support": [
+            "string8.1",
+            "string8.2",
+            "string8.3"
+          ]
+        }
+      }
+    ]
+}
diff --git a/serializers/json/src/test/resources/demo1.yang b/serializers/json/src/test/resources/demo1.yang
new file mode 100644
index 0000000..feeccd6
--- /dev/null
+++ b/serializers/json/src/test/resources/demo1.yang
@@ -0,0 +1,63 @@
+module demo1 {
+    yang-version 1;
+    namespace "namespace1";
+    prefix "demo1";
+    revision "2013-07-15";
+    container device {
+        list device {
+            key deviceid;
+            leaf deviceid {
+                type string;
+            }
+    	    leaf Customs-supervisor {
+        	type string;
+        	description "name of the customs-supervisor.";
+    	    }
+
+    	    leaf Merchandiser-supervisor {
+        	type string;
+        	description "name of merchandiser-supervisor";
+    	    }
+
+    	    list Material-supervisor {
+        	key "name";
+        	leaf name {
+            		type string;
+            		description "name of logistics-supervisor";
+        	}
+
+        	leaf departmentId {
+            		type string;
+            		description "name of department";
+        	}
+    	    }
+
+    	    container Purchasing-supervisor {
+        	leaf purchasing-specialist {
+            		type string;
+            		description "name of the purchasing-specialist person";
+        	}
+
+        	leaf-list support {
+            		type string;
+            		description "name of the support person";
+        	}
+    	    }
+
+    	    leaf-list Warehouse-supervisor {
+        	type string;
+        	description "name of the warehouse-supervisor's";
+    	    }
+
+    	    leaf Trading-supervisor {
+        	type string;
+        	description "name of the trading-supervisor";
+    	    }
+
+    	    leaf-list Employee-id {
+        	type string;
+        	description "list of the employee id";
+    	    }
+        }
+    }
+}
diff --git a/serializers/json/src/test/resources/test.json b/serializers/json/src/test/resources/test.json
new file mode 100644
index 0000000..0235997
--- /dev/null
+++ b/serializers/json/src/test/resources/test.json
@@ -0,0 +1,34 @@
+{
+    "device": [
+      {
+        "deviceid": "string1-deviceid",
+        "Customs-supervisor": "string2",
+        "Merchandiser-supervisor": "string3",
+        "Warehouse-supervisor": [
+          "string41",
+          "string42",
+          "string43"
+        ],
+        "Trading-supervisor": "string4",
+        "Employee-id": [
+          "string41",
+          "string42",
+          "string43"
+        ],
+        "Material-supervisor": [
+          {
+            "name": "string5",
+            "departmentId": "string6"
+          }
+        ],
+        "Purchasing-supervisor": {
+          "purchasing-specialist": "string7",
+          "support": [
+            "string81",
+            "string82",
+            "string83"
+          ]
+        }
+      }
+   ]
+}
\ No newline at end of file
