【问题标题】:Unable to parse XML present in string property of JSON无法解析 JSON 的字符串属性中存在的 XML
【发布时间】:2019-12-10 19:01:06
【问题描述】:

Javascript JSON.parse() 无法解析包含 XML 或 SVG 的字符串。

我已经尝试从示例中删除属性,它就像一个魅力,注意它只有在 XML 包含属性时才会失败。

以下 JSON 字符串使用 JSON.parse() 传递失败;

{ "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>" }

【问题讨论】:

  • 使用 XMLSerializer 将 svg 转换为字符串表示,然后使用 JSON.stringify 转换为 JSON
  • 我没有看到任何错误消息。您能否提供重现问题的可运行代码?

标签: javascript json xml svg


【解决方案1】:

我猜 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) )

【讨论】:

    猜你喜欢
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 2013-01-26
    • 2014-02-23
    相关资源
    最近更新 更多