diff --git a/cli/src/main/java/org/onosproject/cli/cfg/NetworkConfigCommand.java b/cli/src/main/java/org/onosproject/cli/cfg/NetworkConfigCommand.java
index 5f2f86e..d99a183 100644
--- a/cli/src/main/java/org/onosproject/cli/cfg/NetworkConfigCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/cfg/NetworkConfigCommand.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.cli.cfg;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -52,7 +53,7 @@
     @Override
     protected void execute() {
         service = get(NetworkConfigService.class);
-        JsonNode root = new ObjectMapper().createObjectNode();
+        JsonNode root = mapper.createObjectNode();
         if (isNullOrEmpty(subjectKey)) {
             addAll((ObjectNode) root);
         } else {
@@ -68,14 +69,19 @@
                 }
             }
         }
-        print("%s", root.toString());
+
+        try {
+            print("%s", mapper.writerWithDefaultPrettyPrinter().writeValueAsString(root));
+        } catch (JsonProcessingException e) {
+            throw new RuntimeException("Error writing JSON to string", e);
+        }
     }
 
     @SuppressWarnings("unchecked")
     private void addAll(ObjectNode root) {
         service.getSubjectClasses()
                 .forEach(sc -> {
-                    SubjectFactory sf = service.getSubjectFactory((Class) sc);
+                    SubjectFactory sf = service.getSubjectFactory(sc);
                     addSubjectClass(newObject(root, sf.subjectKey()), sf);
                 });
     }
