coi*_*iso 169 javascript jquery json
什么原因导致第三行出现此错误?
var products = [{
"name": "Pizza",
"price": "10",
"quantity": "7"
}, {
"name": "Cerveja",
"price": "12",
"quantity": "5"
}, {
"name": "Hamburguer",
"price": "10",
"quantity": "2"
}, {
"name": "Fraldas",
"price": "6",
"quantity": "2"
}];
console.log(products);
var b = JSON.parse(products); //unexpected token oRun Code Online (Sandbox Code Playgroud)
打开控制台以查看错误
SLa*_*aks 205
products是一个对象.(从对象文字创建)
JSON.parse()用于将包含JSON表示法的字符串转换为Javascript对象.
您的代码将对象转换为字符串(通过调用.toString()),以尝试将其解析为JSON文本.
默认.toString()返回"[object Object]",这是无效的JSON; 因此错误.
EdH*_*EdH 118
假设你知道它是有效的JSON,但你仍然得到这个......
在这种情况下,字符串中可能存在隐藏/特殊字符,来自您获取它们的任何来源.当您粘贴到验证器中时,它们会丢失 - 但在字符串中它们仍然存在.那些看不见的角色会破裂JSON.parse()
如果s是你的原始JSON,那么用以下方法清理它:
// preserve newlines, etc - use valid JSON
s = s.replace(/\\n/g, "\\n")
.replace(/\\'/g, "\\'")
.replace(/\\"/g, '\\"')
.replace(/\\&/g, "\\&")
.replace(/\\r/g, "\\r")
.replace(/\\t/g, "\\t")
.replace(/\\b/g, "\\b")
.replace(/\\f/g, "\\f");
// remove non-printable and other non-valid JSON chars
s = s.replace(/[\u0000-\u0019]+/g,"");
var o = JSON.parse(s);
Run Code Online (Sandbox Code Playgroud)
Onu*_*rım 58
看来你想要对对象进行字符串化.这样做:
JSON.stringify(products);
Run Code Online (Sandbox Code Playgroud)
究其原因,错误是JSON.parse()需要一个String值,products是一个Array.
注:我认为它会尝试json.parse('[object Array]')这会抱怨没想到令牌o后[.
Der*_*rin 27
我发现了同样的问题JSON.parse(inputString).
在我的情况下,输入字符串来自我的服务器页面[返回页面方法].
我打印了typeof(inputString)- 它是字符串,仍然发生错误.
我也试过JSON.stringify(inputString),但没有帮助.
后来我发现这是新行操作符的问题[\n],在字段值内.
我做了一个替换[与其他一些角色,解析后将新行放回],一切正常.
pkt*_*yue 10
products = [{"name":"Pizza","price":"10","quantity":"7"}, {"name":"Cerveja","price":"12","quantity":"5"}, {"name":"Hamburguer","price":"10","quantity":"2"}, {"name":"Fraldas","price":"6","quantity":"2"}];
Run Code Online (Sandbox Code Playgroud)
改成
products = '[{"name":"Pizza","price":"10","quantity":"7"}, {"name":"Cerveja","price":"12","quantity":"5"}, {"name":"Hamburguer","price":"10","quantity":"2"}, {"name":"Fraldas","price":"6","quantity":"2"}]';
Run Code Online (Sandbox Code Playgroud)
小智 9
JSON.parse正在等待参数中的String.您需要对JSON对象进行字符串化以解决问题.
products = [{"name":"Pizza","price":"10","quantity":"7"}, {"name":"Cerveja","price":"12","quantity":"5"}, {"name":"Hamburguer","price":"10","quantity":"2"}, {"name":"Fraldas","price":"6","quantity":"2"}];
console.log(products);
var b = JSON.parse(JSON.stringify(products)); //solves the problem
Run Code Online (Sandbox Code Playgroud)
小智 7
如果有前导或尾随空格,则无效。尾随/前导空格可以删除为
mystring = mystring.replace(/^\s+|\s+$/g, "");
Run Code Online (Sandbox Code Playgroud)
资料来源:http : //www.toptip.ca/2010/02/javascript-trim-leading-or-trailing.html
您必须在https://jsonformatter.curiousconcept.com/处输入有效的json字符串
有效的json字符串必须带有双引号。
JSON.parse({"u1":1000,"u2":1100}) // will be ok
Run Code Online (Sandbox Code Playgroud)
无报价导致错误
JSON.parse({u1:1000,u2:1100})
// error Uncaught SyntaxError: Unexpected token u in JSON at position 2
Run Code Online (Sandbox Code Playgroud)
单引号引起错误
JSON.parse({'u1':1000,'u2':1100})
// error Uncaught SyntaxError: Unexpected token ' in JSON at position 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
765023 次 |
| 最近记录: |