簡體   English   中英

無法解析 JSON 的字符串屬性中存在的 XML

[英]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>&#x2212;</mo><mn>2</mn><mrow><mo>(</mo><mi>a</mi><mo>&#x00D7;</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>&#x2212;</mo><mn>2</mn><mrow><mo>(</mo><mi>a</mi><mo>&#x00D7;</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>&#x2212;</mo><mn>2</mn><mrow><mo>(</mo><mi>a</mi><mo>&#x00D7;</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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM