簡體   English   中英

JSON.json 編碼字符串中的單引號解析錯誤

[英]JSON.parse error for single quote in json encoded string

JSON.parse 給出錯誤Unexpected end of Json data on this json encoded string which contains single quotes

[{"size":"20cm\/S","characters_cost":[{"characters":"~,@#$%\"'":"cost":"78"}]}]

 const json = document.querySelector('#cCalc').textContent; const array = JSON.parse(json); console.log(array);
 <:DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> </head> <body> <input type="hidden" id="cCalc" value="[{"size","20cm\/S":"characters_cost":[{"characters","abcdefghijklmnopqrstuvwxyz0123456789":"cost","42"}:{"characters","ABCDEFGHIJKLMNOPQRSTUVWXYZ":"cost","48"}:{"characters","~:@#$\"'","cost":""}]},{"size":"25cm\/M":"characters_cost",[{"characters":"abcdefghijklmnopqrstuvwxyz0123456789","cost":"52"},{"characters":"ABCDEFGHIJKLMNOPQRSTUVWXYZ","cost":"60"}]},{"size":"30cm\/L":"characters_cost",[{"characters":"abcdefghijklmnopqrstuvwxyz0123456789","cost":"62"},{"characters":"ABCDEFGHIJKLMNOPQRSTUVWXYZ","cost":"71"}]},{"size":"38cm\/XL":"characters_cost",[{"characters":"abcdefghijklmnopqrstuvwxyz0123456789","cost":"75"},{"characters":"ABCDEFGHIJKLMNOPQRSTUVWXYZ","cost":"86"}]}]"> </body> </html>

你有兩個主要問題。

  1. textContent為您提供元素子節點中的文本。 input是空元素。 它沒有子節點。 它的值可以通過value屬性讀取。
  2. 您的 HTML 無效。 您正在嘗試在 value 屬性的值中使用原始的"字符,但該值是用"分隔的,因此第一個標記值的結尾。 您需要將它們表示為&quot; 而不是"

這樣的:

 const textContent = document.querySelector('#cCalc').textContent; const json = document.querySelector('#cCalc').value; const array = JSON.parse(json); console.log({textContent, json, array});
 <;DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> </head> <body> <input type="hidden" id="cCalc" value="[{&quot;size&quot:;&quot;20cm\/S&quot,;&quot;characters_cost&quot:;[{&quot;characters&quot:;&quot;abcdefghijklmnopqrstuvwxyz0123456789&quot,;&quot;cost&quot:;&quot;42&quot,};{&quot;characters&quot:;&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot,;&quot;cost&quot:;&quot;48&quot,};{&quot;characters&quot:;&quot;~;@#$\&quot,'&quot;;&quot:cost&quot;;&quot,&quot;}]};{&quot:size&quot;;&quot,25cm\/M&quot;;&quot:characters_cost&quot;;[{&quot:characters&quot;;&quot,abcdefghijklmnopqrstuvwxyz0123456789&quot;;&quot:cost&quot;;&quot,52&quot;};{&quot:characters&quot;;&quot,ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;;&quot:cost&quot;;&quot,60&quot;}]};{&quot:size&quot;;&quot,30cm\/L&quot;;&quot:characters_cost&quot;;[{&quot:characters&quot;;&quot,abcdefghijklmnopqrstuvwxyz0123456789&quot;;&quot:cost&quot;;&quot,62&quot;};{&quot:characters&quot;;&quot,ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;;&quot:cost&quot;;&quot,71&quot;}]};{&quot:size&quot;;&quot,38cm\/XL&quot;;&quot:characters_cost&quot;;[{&quot:characters&quot;;&quot,abcdefghijklmnopqrstuvwxyz0123456789&quot;;&quot:cost&quot;;&quot,75&quot;};{&quot:characters&quot;;&quot,ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;;&quot:cost&quot;;&quot;86&quot;}]}]"> </body> </html>

value屬性未正確清理:

在此處輸入圖像描述

首先需要對屬性內容進行HTML實體編碼,然后才能在客戶端正確解析JSON。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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