Index: src/main/java/com/modulo/kafkaesque/Controller.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/main/java/com/modulo/kafkaesque/Controller.java	(revision dbc9c10b8a607e7ff939f603db97dae122bcc29b)
+++ src/main/java/com/modulo/kafkaesque/Controller.java	(date 1544743259000)
@@ -1,6 +1,7 @@
 package com.modulo.kafkaesque;
 
 import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.dataformat.yaml.YAMLMapper;
 import com.google.inject.Inject;
@@ -99,6 +100,8 @@
     private TextArea keyTextArea;
     @FXML
     private TextArea valueTextArea;
+    @FXML
+    public TreeView<String> jsonTreeView;
     @FXML
     private TableView<Header> headerTableView;
     @FXML
@@ -252,12 +255,48 @@
         if (formatJson) {
             keyTextArea.setText(formatJson(selectedMessage.getKey()));
             valueTextArea.setText(formatJson(selectedMessage.getValue()));
+            try {
+                Map<String, Object> json = objectMapper.readValue(selectedMessage.getValue(), Map.class);
+                TreeItem<String> root = new TreeItem<>("root");
+                recursivelyAddElements(json, root);
+                jsonTreeView.setRoot(root);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
         } else {
             keyTextArea.setText(selectedMessage.getKey());
             valueTextArea.setText(selectedMessage.getValue());
         }
     }
 
+    private void recursivelyAddElements(Map<String, Object> jsonNode, TreeItem<String> treeItem) {
+        Set<Map.Entry<String, Object>> entries = jsonNode.entrySet();
+
+        if (!entries.isEmpty()) {
+            for (Map.Entry<String, Object> entry : entries) {
+                TreeItem<String> newItem = new TreeItem<>(entry.getKey());
+                treeItem.getChildren().add(newItem);
+                if (entry.getValue() instanceof String) {
+                    recursivelyAddElements((String) entry.getValue(), newItem);
+                } else if (entry.getValue() instanceof ArrayList) {
+                    recursivelyAddElements((ArrayList) entry.getValue(), newItem);
+                } else {
+                    recursivelyAddElements((Map<String, Object>) entry.getValue(), newItem);
+                }
+            }
+        }
+    }
+
+    private void recursivelyAddElements(ArrayList values, TreeItem<String> treeItem) {
+        for (Object val : values){
+            treeItem.getChildren().add(new TreeItem<>((String) val));
+        }
+    }
+
+    private void recursivelyAddElements(String string, TreeItem<String> treeItem) {
+        treeItem.getChildren().add(new TreeItem<>(string));
+    }
+
     /* TODO can be extracted to a JsonUtil */
     private String formatJson(String string) {
         try {
Index: src/main/resources/fxml/mainScene.fxml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/main/resources/fxml/mainScene.fxml	(revision dbc9c10b8a607e7ff939f603db97dae122bcc29b)
+++ src/main/resources/fxml/mainScene.fxml	(date 1544743450000)
@@ -223,7 +223,11 @@
                         </Tab>
                         <Tab text="Value">
                             <content>
-                                <TextArea fx:id="valueTextArea" editable="false" prefHeight="200.0" prefWidth="200.0"/>
+                                <HBox>
+                                    <TreeView fx:id="jsonTreeView" editable="false" prefHeight="200.0"/>
+                                    <TextArea fx:id="valueTextArea" editable="false" prefHeight="200.0"
+                                              prefWidth="200.0" HBox.hgrow="ALWAYS"/>
+                                </HBox>
                             </content>
                         </Tab>
                         <Tab text="Header">
