• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Romanticlizhi
V2EX  ›  程序员

怎么将格式化后的 json 展示到前端界面,并且格式不被破坏

  •  
  •   Romanticlizhi · Jul 5, 2017 · 4405 views
    This topic created in 3264 days ago, the information mentioned may be changed or developed.

    比如一串 json 格式为{"name":"HTL","sex":"男","age":"24"},格式化后为以一个键值对占一行的格式,总共三行。此时我想要在前台页面展示格式化后的数据格式。我现在的做法是:写了一个格式化 json 的函数,将格式化后的数据保存在一个变量中,然后前台是将数据放在 span 标签中。现在我有主要几个问题无法解决:

    1. 怎么将变量的值赋给 span (重要!)
    2. span 会不会破坏格式化后的数据格式
    3. 前端有什么标签不会破坏数据格式
    4. 有木有哪位大神指点一个更加好的方法拯救我吧,在此谢过啦!!!很急!!杭州的可以面对面交流!!
    Supplement 1  ·  Jul 5, 2017
    解释一下:因为前端用的 eazyUI 这个框架,所以我的内容是默认被放在了 span 里面 ,结构大致是<dd>里面装了一个<span>,所以我现在要把这个 span 移除,最恶心的是 span 还被这个框架搞了各种样式在里面!!恶心到我了!我的大致逻辑是:
    ```
    var $forminput = $infoForm.find("*[ui-name = c_content]");
    var $parent = $forminput.parent(); //得到标签<dd>
    var json = $forminput.text();
    var formatjson = JSON.stringify(json1, null, '\t') ;//得到格式化后的 json
    var $pre = document.createElement("pre");
    $pre.innerHTML = formatjson;
    $parent.removeChild("span");
    $parent.appendChild("pre");
    ```
    并不行,报错$parent.removeChild is not a function,为什么呀?
    13 replies    2017-07-06 15:21:17 +08:00
    cliberal
        1
    cliberal  
       Jul 5, 2017 via iPhone
    为啥要放 span 里,直接将格式化后的数据放 pre 里不行么
    vankid
        2
    vankid  
       Jul 5, 2017
    用 html 标签<br>换行就可以,span 赋值直接$("选择符").html(json);
    vankid
        3
    vankid  
       Jul 5, 2017
    如果你不想改写好的格式化工具,那就 json.replace("\n","<br/>");然后传到前台$("选择符").html(json)
    Romanticlizhi
        4
    Romanticlizhi  
    OP
       Jul 5, 2017
    @vankid 好坑,网上查出一大堆用.innerHTML(),innerText()等等都不行,就是没有.html(),可怜我这个做 Java 的后端了,非常感谢!!!
    seancheer
        5
    seancheer  
       Jul 5, 2017
    <pre>标签不会破坏格式。。。顺带,楼主你头像让人耳目一新
    Romanticlizhi
        6
    Romanticlizhi  
    OP
       Jul 5, 2017
    @vankid 为啥 json.replace(",","<br/>");只有第一行的键值对后面的逗号被替换了。。。。
    ijse
        7
    ijse  
       Jul 5, 2017
    ```
    const formatedJSON = JSON.stringify(data, null, '\t')
    ```
    然后把它放到<pre>中就好了。
    ijse
        8
    ijse  
       Jul 5, 2017
    const $pre = document.createElement('pre')
    $pre.innerHTML = formatedJSON
    document.querySelector('span').appendChild($pre)
    KeepPro
        9
    KeepPro  
       Jul 5, 2017 via Android
    女装大佬连这都解决不了了么 233
    FlowerChen
        10
    FlowerChen  
       Jul 5, 2017
    用个循环一个个读出来,放到你要的 DOM 里面,比如 table 里面
    Romanticlizhi
        11
    Romanticlizhi  
    OP
       Jul 5, 2017
    @ijse 感谢了,但是,请看 append!
    vankid
        12
    vankid  
       Jul 6, 2017
    @Romanticlizhi 我也是个 java 后端啊。。。
    vankid
        13
    vankid  
       Jul 6, 2017
    @Romanticlizhi javascript 是这样子啦,你搜下 replaceAll,有很多写好的方法的。或者你在后台用 java 里的 replace 换
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1685 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 16:24 · PVG 00:24 · LAX 09:24 · JFK 12:24
    ♥ Do have faith in what you're doing.