[英]Unable to parse XML present in string property of JSON
Javascript JSON.parse() 無法解析包含 XML 或 SVG 的字符串。
我曾嘗試從示例中刪除屬性,並且它的工作原理非常棒,請注意它僅在 XML 包含屬性時才會失敗。
使用 JSON.parse() 傳遞以下 JSON 字符串失敗;
{ "id": 1, "mahtml": "<math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><msup><mi>a</mi><mn>2</mn></msup><mo>−</mo><mn>2</mn><mrow><mo>(</mo><mi>a</mi><mo>×</mo><mi>b</mi><mo>)</mo></mrow><mo>+</mo><msup><mi>b</mi><mn>2</mn></msup></math>" }
{ "id": 1, "svg": "<svg height=\"100\" width=\"100\"><circle cx=\"50\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"3\" fill=\"red\" /></svg>" }
使用 JSON.parse() 成功解析以下 JSON 字符串;
{ "id": 1, "mahtml": "<math><msup><mi>a</mi><mn>2</mn></msup><mo>−</mo><mn>2</mn><mrow><mo>(</mo><mi>a</mi><mo>×</mo><mi>b</mi><mo>)</mo></mrow><mo>+</mo><msup><mi>b</mi><mn>2</mn></msup></math>" }
{ "id": 1, "svg": "<svg/><circle/></svg>" }
我猜 JSON 是手動復制的。 \\"
必須是\\\\"
才能轉義\\
:
var json = '{ "id": 1, "mahtml": "<math xmlns=\\\\"http://www.w3.org/1998/Math/MathML\\\\" display=\\\\"block\\\\"><msup><mi>a</mi><mn>2</mn></msup><mo>−</mo><mn>2</mn><mrow><mo>(</mo><mi>a</mi><mo>×</mo><mi>b</mi><mo>)</mo></mrow><mo>+</mo><msup><mi>b</mi><mn>2</mn></msup></math>" }' console.log( JSON.parse(json) )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.