diff --git a/IPython/html/static/notebook/js/outputarea.js b/IPython/html/static/notebook/js/outputarea.js
index 2d93adb13..337e07f89 100644
--- a/IPython/html/static/notebook/js/outputarea.js
+++ b/IPython/html/static/notebook/js/outputarea.js
@@ -872,6 +872,10 @@ var IPython = (function (IPython) {
// TODO: remove mapping of short keys when we update to nbformat 4
data = this.rename_keys(data, OutputArea.mime_map_r);
data.metadata = this.rename_keys(data.metadata, OutputArea.mime_map_r);
+ // msg spec JSON is an object, nbformat v3 JSON is a JSON string
+ if (data["application/json"] !== undefined && typeof data["application/json"] === 'string') {
+ data["application/json"] = JSON.parse(data["application/json"]);
+ }
}
this.append_output(data);
@@ -890,6 +894,10 @@ var IPython = (function (IPython) {
// convert mime keys to short keys
data = this.rename_keys(data, OutputArea.mime_map);
data.metadata = this.rename_keys(data.metadata, OutputArea.mime_map);
+ // msg spec JSON is an object, nbformat v3 JSON is a JSON string
+ if (data.json !== undefined && typeof data.json !== 'string') {
+ data.json = JSON.stringify(data.json);
+ }
}
if (msg_type == "execute_result") {
// pyout message has been renamed to execute_result,