使用JSON字符串中的HTML代码引发异常

时间:2014-04-07 09:21:05

标签: javascript html json

我正在尝试在JSON字符串中使用HTML代码,但我遇到了一些问题。 JSON.parse(string)引发异常"Unexpected token <"

在互联网上寻找解决方案我发现问题不应该存在。所以我尝试使用验证器(http://jsonlint.com/),响应是

Parse error on line 1580:
...re",        "DEU": "<b>BESCHREIBUNG</b>
----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

好的,问题是lt符号......等等!错误在1580行,但在此之前我还有更多的/ gt符号,例如:

...
[1557] "VAC_SAFETY_LONG": {
[1558]     "ITA": "Segnale sicurezza vuoto mancante",
[1559]     "ENG": "Vacuum safety signal missing",
[1560]     "DEU": "<b>BESCHREIBUNG</b><br> Dieser Alarm wird ausgelost, wenn die Sicherheitsbedingungen fur den Aufbau des Vakuums im Gehause nicht gegeben sind. <br><br><b>REAKTION DES OFENS</b><br> Keine spezifische Reaktion. <br><br><b>URSACHEN UND ABHILFE</b><br> Der Gehausedruck ist hoher als der Atmospharendruck. <br><br> Problem mit dem Niederdruckschalter [BSP_LP]. <br><br> Den Druckschalter uberprufen."
[1561] },
...
[1572] "VOP_LONG": {
[1573]     "ITA": "Sovrapressione campana",
[1574]     "ENG": "Vessel overpressure",
[1575]     "DEU": "<b>BESCHREIBUNG</b><br> Dieser Alarm wird ausgelost, wenn der im Gehause vorliegende Druck den zulassigen Hochstwert ubersteigt. <br><br><b>REAKTION DES OFENS</b><br> Das Gaseinlassventil schlieBt sich. Sollte sich das Gaseinlassventil nicht schnell genug schlieBen, offnet sich das Sicherheitsventil. <br><br><b>URSACHEN UND ABHILFE</b><br> Ungenaue Druckmessung. Der Druckmesser sollte neu justiert oder ersetzt werden. <br><br> Gaseinlassventil zu langsam. Das Elektroventil muss reguliert werden, damit sich das Ventil rascher schlieBt."
[1576] },
[1577] "VOT_LONG": {
[1578]     "ITA": "Sovratemperatura campana",
[1579]     "ENG": "Vessel overtemperature",
[1580]     "DEU": "<b>BESCHREIBUNG</b><br> Dieser Alarm wird ausgelost, wenn die Gehausetemperatur hoher als die maximal zulassige Temperatur fur den Ofen ist.  <br><br><b>REAKTION DES OFENS</b><br> Die Aufheizung wird angehalten und der Ofen verharrt im Wartezustand. <br><br><b>URSACHEN UND ABHILFE</b><br> Mangel an Kuhlwasser fur das Gehause oder zu hohe Wassertemperatur. In diesem Fall muss das Kuhlwassersystem kontrolliert werden. <br><br> Aus irgendeinem Grund liefert die Heizkammer keine gute Isolierung. Die Hitzeschilde schlieBen unter Umstanden nicht richtig oder einige Teile der Kammerwand konnen beschadigt sein. Der Ofen muss sich abkuhlen und die Heizkammer inspiziert werden. <br><br> Funktionsstorung eines Temperaturschalters. Wenn sich keine Ursache fur den Alarm finden lasst, kann der Temperaturschalter, der den Alarm ausgelost hat, durch einen anderen Schalter aus dem Ersatzteilbestand ausgetauscht werden und ein neuer Zyklus gestartet werden."
[1581] },
...

由“DEU”索引的字符串以相同的字符开头,为什么一个引发错误而另一些不引发错误?

1 个答案:

答案 0 :(得分:1)

问题恰好在您的JSON的第1580行,但不在HTML标记中。它是一个制表符,就在双<br>标签之前(我不认为它会在此处呈现为标签):

"DEU": "<b>BESCHREIBUNG</b><br> ... fur den Ofen ist.    <br><br>

显然,它不在您的问题中,但存在于Pastebin代码中。如果删除它,JSONLint将正确解析它。