2019-04-21 11:50:48 +08:00

78 lines
5.5 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<article id="wikiArticle">
<div></div>
<h2 id="信息">信息</h2>
<pre><code class="language-javascript">SyntaxError: JSON.parse: unterminated string literal
SyntaxError: JSON.parse: bad control character in string literal
SyntaxError: JSON.parse: bad character in string literal
SyntaxError: JSON.parse: bad Unicode escape
SyntaxError: JSON.parse: bad escape character
SyntaxError: JSON.parse: unterminated string
SyntaxError: JSON.parse: no number after minus sign
SyntaxError: JSON.parse: unexpected non-digit
SyntaxError: JSON.parse: missing digits after decimal point
SyntaxError: JSON.parse: unterminated fractional number
SyntaxError: JSON.parse: missing digits after exponent indicator
SyntaxError: JSON.parse: missing digits after exponent sign
SyntaxError: JSON.parse: exponent part is missing a number
SyntaxError: JSON.parse: unexpected end of data
SyntaxError: JSON.parse: unexpected keyword
SyntaxError: JSON.parse: unexpected character
SyntaxError: JSON.parse: end of data while reading object contents
SyntaxError: JSON.parse: expected property name or '}'
SyntaxError: JSON.parse: end of data when ',' or ']' was expected
SyntaxError: JSON.parse: expected ',' or ']' after array element
SyntaxError: JSON.parse: end of data when property name was expected
SyntaxError: JSON.parse: expected double-quoted property name
SyntaxError: JSON.parse: end of data after property name when ':' was expected
SyntaxError: JSON.parse: expected ':' after property name in object
SyntaxError: JSON.parse: end of data after property value in object
SyntaxError: JSON.parse: expected ',' or '}' after property value in object
SyntaxError: JSON.parse: expected ',' or '}' after property-value pair in object literal
SyntaxError: JSON.parse: property names must be double-quoted strings
SyntaxError: JSON.parse: expected property name or '}'
SyntaxError: JSON.parse: unexpected character
SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data
</code></pre>
<h2 id="错误类型">错误类型</h2>
<p><a href="Reference/Global_Objects/SyntaxError" title="SyntaxError 对象代表尝试解析语法上不合法的代码的错误。"><code>SyntaxError</code></a></p>
<h2 id="哪里出错了">哪里出错了?</h2>
<p><a href="Reference/Global_Objects/JSON/parse" title="JSON.parse() 方法用来解析JSON字符串构造由字符串描述的JavaScript值或对象。提供可选的reviver函数用以在返回之前对所得到的对象执行变换(操作)。"><code>JSON.parse()</code></a> 会把一个字符串解析成 JSON 对象。如果字符串书写正确,那么其将会被解析成一个有效的 JSON但是这个字符串被检测出错误语法的时候将会抛出错误。</p>
<h2 id="示例">示例</h2>
<h3 id="JSON.parse()_不允许在末尾添加多余的逗号"><code>JSON.parse()</code> 不允许在末尾添加多余的逗号</h3>
<p>下面两行代码都会抛出错误:</p>
<pre><code class="language-js example-bad">JSON.parse('[1, 2, 3, 4, ]');
JSON.parse('{"foo" : 1, }');
// SyntaxError JSON.parse: unexpected character
// at line 1 column 14 of the JSON data
</code></pre>
<p>省略末尾多余的逗号解析 JSON 就是正确:</p>
<pre><code class="language-js example-good">JSON.parse('[1, 2, 3, 4 ]');
JSON.parse('{"foo" : 1 }');</code></pre>
<h3 id="JSON_的属性名必须使用双引号">JSON 的属性名必须使用双引号</h3>
<p>属性名上不能使用单引号,例如: 'foo'。</p>
<pre><code class="language-js example-bad">JSON.parse("{'foo' : 1 }");
// SyntaxError: JSON.parse: expected property name or '}'
// at line 1 column 2 of the JSON data</code></pre>
<p>取而代之,写成 "foo"</p>
<pre><code class="language-js example-good">JSON.parse('{"foo" : 1 }');</code></pre>
<h3 id="前导_0_和小数点">前导 0 和小数点</h3>
<p>数字不能用 0 开头比如01并且你的小数点后面必须跟着至少一个数字。</p>
<pre><code class="language-js example-bad">JSON.parse('{"foo" : 01 }');
// SyntaxError: JSON.parse: expected ',' or '}' after property value
// in object at line 1 column 2 of the JSON data
JSON.parse('{"foo" : 1. }');
// SyntaxError: JSON.parse: unterminated fractional number
// at line 1 column 2 of the JSON data
</code></pre>
<p>正确的写法应该是只写一个1不书写前面的0。在小数点的后面至少要跟上一个数字:</p>
<pre><code class="language-js example-good">JSON.parse('{"foo" : 1 }');
JSON.parse('{"foo" : 1.0 }');
</code></pre>
<h2 id="相关链接">相关链接</h2>
<ul>
<li><a href="Reference/Global_Objects/JSON" title="JSON对象包含两个方法: 用于解析 JavaScript Object Notation  (JSON) 的 parse() 方法,以及将对象/值转换为 JSON字符串的 stringify() 方法。除了这两个方法, JSON这个对象本身并没有其他作用也不能被调用或者作为构造函数调用。"><code>JSON</code></a></li>
<li><a href="Reference/Global_Objects/JSON/parse" title="JSON.parse() 方法用来解析JSON字符串构造由字符串描述的JavaScript值或对象。提供可选的reviver函数用以在返回之前对所得到的对象执行变换(操作)。"><code>JSON.parse()</code></a></li>
<li><a href="Reference/Global_Objects/JSON/stringify" title="JSON.stringify() 方法是将一个JavaScript值(对象或者数组)转换为一个 JSON字符串如果指定了replacer是一个函数则可以替换值或者如果指定了replacer是一个数组可选的仅包括指定的属性。"><code>JSON.stringify()</code></a></li>
</ul>
</article>