【问题标题】:Can a json string contain HTML tags with it?json字符串可以包含HTML标签吗?
【发布时间】:2011-01-10 06:03:03
【问题描述】:

考虑这是我的 json 字符串,

[{
  "Mat_id": "2",
  "Mat_Name": "Steel",
  "Measurement": "mm",
  "Description": "Steel"
}]

我可以像这样在这个 json 字符串中添加 HTML 标签吗,

[{
  "Mat_id": "2",
  "Mat_Name": "Steel",
  "Measurement": "<bold>mm</bold>",
  "Description": "Steel"
}]
  • 这是否是有效的 json 字符串?
  • Eval('('+ thisstring +')') 何时会引发问题?如果有,那是什么?

我这样做是因为我会将这个 json 对象传递给一个使用 json 的 yui 数据表 数据源...

编辑:

这是我生成的 json 字符串,

{
  "Table": [{
    "Mat_id": "2",
    "Mat_Name": "Jully",
    "Measurement": "<bold>Inches</bold>",
    "Description": "Gully"
  }, ]
}

但我没有以粗体显示我的测量列值...

【问题讨论】:

  • 好问题...我正在寻找它...我几乎可以肯定是的,但是这个线程证实了它。谢谢。
  • 你可以这样做,{"Table" : [{"Mat_id" : "2", "Mat_Name" : "Jully","Measurement" : "英寸 ", "Description" : "Gully"},]} 通过这种方式,你可以得到粗体的值...

标签: html json


【解决方案1】:

是的.. 没问题。 :)

【讨论】:

    【解决方案2】:

    从技术上讲,是的,您可以这样做...实际上,如果我的数据中有 HTML 标记,我会有点担心。里面可能还有什么?闻起来像 XSS 漏洞。

    【讨论】:

    • @Aaronaught 我没有得到粗体的测量值...我的标签错了吗?
    • 如果是 HTML,你应该使用&lt;strong&gt;。
    • @Anon y 我们应该使用&lt;strong&gt; 而不是&lt;bold&gt;
    • 这个想法是&lt;strong&gt; 表示一般的强调,而不是特定的风格,就像&lt;b&gt; 标签所做的那样。您可以通过使用 CSS 更改每个标签的含义,但如果您将 &lt;b&gt; 标签设为斜体,则该标签在谎报其含义。如果您将&lt;strong&gt; 标签设为斜体,那么它在语义上仍然有意义。顺便说一句,&lt;bold&gt;不起作用的原因是因为HTML中没有&lt;bold&gt;标签,只有&lt;b&gt;。
    • @Pandiya:您并没有具体说明标签是如何进入其中的。通常,从域对象到 JSON 的转换是由某个库完成的,因此您要么拦截它,要么在应用程序中传递未转义的 HTML 字符串。为什么不直接使用 YUI API 来使列/单元格变为粗体?很容易剥皮。
    【解决方案3】:

    使用来自的 Encoder.js http://code.google.com/p/jsool/source/browse/jsool-site/js/util/Encoder.js?r=176

    获取数据时使用

    Encoder.htmlDecode(值);

    在传递数据时使用

    Encoder.htmlDecode(值);

    【讨论】:

      【解决方案4】:

      此答案适用于 >Angular 2 编译,关于解析包含 html 标签的 json。

      下面是包含html标签的json

      { 
       "data":"highlighting <b>this</b> in bold"
      }
      

      如您所见,这是渲染时在 html 中需要加粗的关键字。

      如果我像下面这样使用角度插值,它将被解析为普通字符串,并且 标签将按原样打印。

         <p> {{titleDetails.what}}</p>
      

      输出:以粗体突出显示 this。

      但是,如果您使用如下所示的属性绑定,它将呈现预期的输出。

         <p [innerHTML]="titleDetails.what"></p>
      

      输出:以粗体突出显示 this

      【讨论】:

        猜你喜欢
        • 2015-12-26
        • 1970-01-01
        • 2014-08-01
        • 2013-06-14
        • 1970-01-01
        • 1970-01-01
        • 2013-07-23
        • 2018-08-24
        • 1970-01-01
        相关资源
        最近更新 更多