我JSON。Stringify一个json对象

result = JSON.stringify(message, my_json, 2)

上面参数中的2应该是漂亮的输出结果。如果我执行alert(result)之类的操作,它就会这样做。但是,我想通过在div中追加它来将其输出给用户。当我这样做时,我只会显示一行。(我不认为这是工作,因为断点和空格没有被解释为html?)

{ "data": { "x": "1", "y": "1", "url": "http://url.com" }, "event": "start", "show": 1, "id": 50 }

是否有一种输出JSON结果的方法。Stringify到一个div在一个漂亮的打印方式?


当前回答

如果你使用React,你也可以使用React -json-tree包。

我为它创建了一个组件,如下所示,接受一个数据道具。

import React from 'react';
import JSONTree from 'react-json-tree'
import './style.css';

const theme = {
    scheme: 'monokai',
    base00: '#272822',
    base01: '#383830',
    base02: '#49483e',
    base03: '#75715e',
    base04: '#a59f85',
    base05: '#f8f8f2',
    base06: '#f5f4f1',
    base07: '#f9f8f5',
    base08: '#f92672',
    base09: '#fd971f',
    base0A: '#f4bf75',
    base0B: '#a6e22e',
    base0C: '#a1efe4',
    base0D: '#66d9ef',
    base0E: '#ae81ff',
    base0F: '#cc6633',
};

const TreeView = (props) => {

    return (
        <div className="tree-container">
            <JSONTree
                data={props.data}
                theme={theme}
                invertTheme={true}
                hideRoot
                labelRenderer={([key]) => {
                    return <strong>{key}:</strong>
                }}
                valueRenderer={(valueAsString, value) => {
                    return <span className="capitalize">{value}</span>;
                }}
                getItemString={() => ''}
            />
        </div>
    );
}

export default TreeView;

然后我在导入组件后在html元素中使用它,如下所示。

<div>
 <TreeView data={s.value} />
</div>

其他回答

考虑你的REST API返回:

{"Intent":{"Command":"search","SubIntent":null}}

然后你可以按照下面的步骤打印出来:

<pre id="ciResponseText">Output will de displayed here.</pre>   

var ciResponseText = document.getElementById('ciResponseText');
var obj = JSON.parse(http.response);
ciResponseText.innerHTML = JSON.stringify(obj, undefined, 2);   

确保JSON输出在<pre>标记中。

完全披露我是这个包的作者,但另一种以可读的方式输出JSON或JavaScript对象的方法是nodedump, https://github.com/ragamufin/nodedump

如果你的<pre>标签显示了一行JSON,因为这是字符串已经提供的方式(通过api或一些你无法控制的函数/页面),你可以像这样重新格式化它:

HTML:

<pre id="json">{"some":"JSON string"}</pre>

JavaScript:

    (function() {
        var element = document.getElementById("json");
        var obj = JSON.parse(element.innerText);
        element.innerHTML = JSON.stringify(obj, undefined, 2);
    })();

或jQuery:

    $(formatJson);

    function formatJson() {
        var element = $("#json");
        var obj = JSON.parse(element.text());
        element.html(JSON.stringify(obj, undefined, 2));
    }

用预标签包装

<pre> { JSON.stringify(todos, null, 4)}</pre>

输出将是

[
    {
        "id": "6cbc8fc4-a89e-4afa-abc1-f72f27b14271",
        "title": "shakil",
        "completed": false
    },
    {
        "id": "5ee68df8-e152-46ae-82e2-8eb49f477d6f",
        "title": "kobir",
        "completed": false
    }
]