2014-10-19 59 views
0

对不起,这个问题可能会被问几百次,我寻找类似的问题,但我无法找到一个线索,为什么我仍然收到此错误。JSON.parse导致意外的令牌错误消息

当我尝试解析下面的特定字符串时,它会显示“语法错误:意外的标记”。这是JS代码:

var a = "[{"ltd":"40.88393692299686","lng":"29.40516471862793","country":"Türkiye","city":"İstanbul","address":"Tepeören Mh., 2. Caddesi, 41480 Istanbul-Istanbul Province, Turkey","title":"Indoor Life Facory","detail":"İTOSB 2.Cad. No.7 Tuzla/istanbul/Turkey","addressTypeId":1,"adressType":"Üretim Birimi"},{"ltd":"40.97575903170847","lng":"29.051960706710815","country":"Türkiye","city":"İstanbul","address":"Fenerbahçe Mh., Bağdat Avenue 184-190, 34724 Kadıköy-Istanbul Province, Turkey","title":"Indoor Life Head Office","detail":"Bağdat Cad. Heper Apt. \r\nNo:165/5 34730 \r\nSelamiçeşme/Kadıköy/İstanbul/Turkey","addressTypeId":2,"adressType":"İdari Birim"}]"; 
 
a = a.replace(/"/g, '"'); 
 
var jsonList = JSON.parse(a);

+0

需要更换'/ R/N'使用正则表达式,然后做JSON.parse – 2014-10-19 19:52:51

回答

1

由于您有字符串中的;BağdatCad.HeperApt.\r\n,这是导致错误,它显示无效JSON。你需要用正则表达式替换空格或空白字符串。所以正确的代码会是。

var a = "[{"ltd":"40.88393692299686","lng":"29.40516471862793","country":"Türkiye","city":"İstanbul","address":"Tepeören Mh., 2. Caddesi, 41480 Istanbul-Istanbul Province, Turkey","title":"Indoor Life Facory","detail":"İTOSB 2.Cad. No.7 Tuzla/istanbul/Turkey","addressTypeId":1,"adressType":"Üretim Birimi"},{"ltd":"40.97575903170847","lng":"29.051960706710815","country":"Türkiye","city":"İstanbul","address":"Fenerbahçe Mh., Bağdat Avenue 184-190, 34724 Kadıköy-Istanbul Province, Turkey","title":"Indoor Life Head Office","detail":"Bağdat Cad. Heper Apt. \r\nNo:165/5 34730 \r\nSelamiçeşme/Kadıköy/İstanbul/Turkey","addressTypeId":2,"adressType":"İdari Birim"}]"; 
 
a = a.replace(/"/g, '"'); 
 
a = a.replace(/(?:\r\n|\r|\n)/g, ''); 
 
console.log(a); 
 
var jsonList = JSON.parse(a);

+0

谢谢,它的工作。 – isidat 2014-10-20 05:09:15

1

您的JSON是无效的(jsonlint.com)。

您也需要用\\n替换新的行。

// additional replace func call 
a = a.replace(/(?:\r\n|\r|\n)/g, '\\n'); 
0

您的文字上有新行:Apt. \r\nNo:165/。 (请注意,JavaScript解析器会将JavaScript源代码解析为字符串,它们将转换为实际的新行)。

这些在JSON字符串中是不允许的,必须用换码序列替换。