2017-03-28 9 views
0

JSONデータをjQueryで初めて変換するのですが、JSON文字列を変換しようとすると次のエラーが発生します。私は何か間違っているのですか?私はjQueryでJSON文字列を変換する簡単なサイトを探していましたが、チュートリアルのほとんどは理解しにくいようです。可能であれば、jsonsをjQueryでURLから変換するためのヒントをいくつか紹介します。JQueryでJSONデータを正しく解析できない

var obj = jQuery.parseJSON('{"result":[{"id":"25","name":"loplo\n","score":"1198"},{"id":"58","name":"adjm","score":"1131"},{"id":"60","name":"dragon with ","score":"1083"},{"id":"57","name":"tDj","score":"799"},{"id":"59","name":"dragon with ","score":"452"},{"id":"55","name":"Donny","score":"450"},{"id":"56","name":"ajo ","score":"401"},{"id":"61","name":"make ","score":"392"}]}'); 

エラーメッセージ

Uncaught SyntaxError: Unexpected token 
in JSON at position 35 
    at JSON.parse (<anonymous>) 
    at Function.m.parseJSON (jquery-1.11.1.min.js:4) 
    at leaderboard.js:16 
+0

あなたは実際にあなたのJSコードでその文字列リテラルを持っていますか?もしそうなら、なぜですか?あなたは 'var obj = {result:[{...'。 –

+1

文字列リテラルの '\ n'は、実際の文字がJSONデータの中にある場合とは異なって解釈されます。あなたが最後に解決しようとしている実際の問題は何ですか? –

+0

\ n文字があなたのjsonデータを破壊しています。それを取り除くと、それはちょうど良い構文解析を行います –

答えて

4

あなたがそのエラーメッセージを取得している理由は、名前がある最初の要素で\ nのです: "loploする\ n"

が。これはをそのようなJSONオブジェクトでは、削除またはエスケープする必要があるため、新しい行が許可されています。この問題を回避するには

あなたは

var obj = jQuery.parseJSON(mystring.replace(/\n/g,"\\n")); 

を行うことができますが、ここでこの詳細を読むことができます:https://bugs.chromium.org/p/v8/issues/detail?id=616

+0

「新しい行はJSONでは許されません」という意味ですか? – Jamiec

+0

「JSONでは新しい行は許可されていません」確かに、彼らはただエスケープ*する必要があります。 –

+0

公正な彼らは逃げる必要がある – Avitus

0

をあなたはloploの値として改行文字を持っているので、これは次のとおりです。

"loplo \ n" \ nを削除しても問題ありません。

\ nをすべて置き換えることはお勧めできません。 \ nを残したい場合は、次のようにエスケープ文字を追加してください。

"loplo \\ n"これはうまくいくはずです。

0

使用この...

var e = '{"result":[{"id":"1351","identite":"RES ADDS","etat":"1","email":"[email protected]","telephone":"8787878","adresse":"COTONOU","nom_pays":"Togo","indicatif":"228"},{"id":"1350","identite":"MY DREAM","etat":"2","email":"[email protected]","telephone":"5248525","adresse":"COTONOU","nom_pays":"Togo","indicatif":"228"},{"id":"1349","identite":"UN ","etat":"1","email":"[email protected]","telephone":"66353364","adresse":"","nom_pays":"Benin","indicatif":"229"},{"id":"1348","identite":"DOHOU ULRICH SEMASSA &amp; Fils","etat":"1","email":"[email protected]","telephone":"66353364","adresse":"COTONOU","nom_pays":"Benin","indicatif":"229"},{"id":"1344","identite":"DC","etat":"2","email":"[email protected]","telephone":"66353364","adresse":"","nom_pays":"Afghanistan","indicatif":"93"},{"id":"1343","identite":"AGAIN","etat":"2","email":"[email protected]","telephone":"66353364","adresse":"","nom_pays":"Afghanistan","indicatif":"93"},{"id":"1342","identite":"SOCIAL LIMITED","etat":"3","email":"[email protected]","telephone":"66353364","adresse":"","nom_pays":"Afghanistan","indicatif":"93"}]}'; 
 
var json = JSON.stringify(eval('(' + e + ')')); 
 
var arr = $.parseJSON(json); 
 
var resultData = arr['result'] ; 
 

 
console.log(resultData) ;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

あなたが働いていなかったので、私は、JSON文字列のデータを変更しました。私はそれがうまく形成されていないと思う

+0

これは質問に答えることはできません。また、あなたは 'const json = JSON.parse(e)。 const resultData = json.result'です。評価は完全に不要で、非常に悪い習慣です。 –

関連する問題