2015-10-07 4 views
1

Я получаю сообщение об ошибке, когда я разбираю json строку в javascript. «Uncaught SyntaxError: Неожиданный токен Z» Я знаю его для двойных qoutes в теге «Source», но как это разобрать?javascript Json parse error Doubleqoutes

<script type="text/javascript"> 
    var data = '[ { "Outcome": "Success", "Message": null, "Identity": "Request", "Delay": 0.115825, "BaseCurrency": "EUR", "QuoteCurrency": "USD", "Symbol": "EURUSD", "Date": "10/07/2015", "Time": "2:46:32 PM", "QuoteType": "Spot", "Bid": 1.12394, "Mid": 1.12397, "Ask": 1.124, "Spread": 0.00006, "Text": "1 European Union euro = 1.12397 United States dollars", "Source": "SIX Financial Information, Buyer = \"ZKB Zuercher Kantonalbank, Devisen\", Seller = \"ZKB Zuercher Kantonalbank, Devisen\"" }, { "Outcome": "Success", "Message": null, "Identity": null, "Delay": 0, "BaseCurrency": "GBP", "QuoteCurrency": "USD", "Symbol": "GBPUSD", "Date": "10/07/2015", "Time": "2:46:32 PM", "QuoteType": "Spot", "Bid": 1.5293, "Mid": 1.5295, "Ask": 1.5297, "Spread": 0.0004, "Text": "1 British pound sterling = 1.5295 United States dollars", "Source": "SIX Financial Information, Buyer = \"UBS Investment Bank\", Seller = \"UBS Investment Bank\"" } ]'; 
    var obj = JSON.parse(data); 
    for(var key in obj){ 
     console.log(obj[key].Symbol);  
    } 
</script> 

Я мог бы использовать методы замены, но это не чистое решение, я думаю.

+0

Использование '' \ "внутри строки в кавычках, как у вас есть в' Source' является законным См json.org –

+0

'' \ '' это специальный символ в строковых литералов * и *.. JSON: JSON внутри строковых литералов не очень распространен. Почему вы используете JSON здесь, в первую очередь? –

ответ

2

Не знаете, почему вы используете JSON здесь. Просто сделайте это:

<script type="text/javascript"> 
    var obj = [ { "Outcome": "Success", "Message": null, "Identity": "Request", "Delay": 0.115825, "BaseCurrency": "EUR", "QuoteCurrency": "USD", "Symbol": "EURUSD", "Date": "10/07/2015", "Time": "2:46:32 PM", "QuoteType": "Spot", "Bid": 1.12394, "Mid": 1.12397, "Ask": 1.124, "Spread": 0.00006, "Text": "1 European Union euro = 1.12397 United States dollars", "Source": "SIX Financial Information, Buyer = \"ZKB Zuercher Kantonalbank, Devisen\", Seller = \"ZKB Zuercher Kantonalbank, Devisen\"" }, { "Outcome": "Success", "Message": null, "Identity": null, "Delay": 0, "BaseCurrency": "GBP", "QuoteCurrency": "USD", "Symbol": "GBPUSD", "Date": "10/07/2015", "Time": "2:46:32 PM", "QuoteType": "Spot", "Bid": 1.5293, "Mid": 1.5295, "Ask": 1.5297, "Spread": 0.0004, "Text": "1 British pound sterling = 1.5295 United States dollars", "Source": "SIX Financial Information, Buyer = \"UBS Investment Bank\", Seller = \"UBS Investment Bank\"" } ]; 
    for(var key in obj){ 
     console.log(obj[key].Symbol);  
    } 
</script> 
+0

Я новичок в Json, но спасибо, что мне никогда не приходилось его разбирать. Это работает! – Vazzilly

+0

@Vazzilly, обратите внимание, там не является JSON в моем ответе. Существует только объектный литерал. Существует разница между JSON (который всегда является строкой) и литералом объекта. –

+0

хорошо спасибо, узнал, что из-за API данных, который называет его Json ive, называется Json также – Vazzilly

3

Вам также необходимо избегать обратной косой черты. Вместо \", тип \\".