2016-04-26 13 views
-1

編集:解決済み...ここでJSON.stringify()を使用する必要がありました。 Doh。JSON.parseが無効な文字を与える理由

私はJSON.parse()に応答トークンを送り、Internet Explorerで "SyntaxError:Invalid character"を取得しようとしています。 (この問題が原因CORSにChromeで存在するが、それは別の問題だかどうかわからない。)

console.log(response.token.isAdmin) 
// false 

console.log(JSON.parse(response.token.isAdmin)) 
// false 

console.log(response.token.tokenValue) 
// 36151b9e-ad0d-49de-a14b-5461489c7065 

console.log(JSON.parse(response.token.tokenValue.toString())) 
// SyntaxError: Invalid character 

同じエラーが私が解析しようとしている任意の文字列のために発生します。ソースが文字列(ブール値、整数)でない場合、解析は正常に動作します。

なぜこれが機能しないのですか?オブジェクトを文字列に挿入するにはどうすればよいですか?

+0

結果として期待していることGUID文字列をJSON.parseに渡すことはできませんか? –

+0

あなたのresponse.token.tokenValueはJSON形式ですか?そうではないようです。 JSON.stringifyを使用することを意味しますか? – James

+0

まあ、JSON.parse(トークン)が理想です。しかし、構文エラーが発生するので、JSON.parse(token.tokenValue)に絞り込んだ。私は文字列を得ることができるはずです、右? –

答えて

5

36151b9e-ad0d-49de-a14b-5461489c7065は無効です。JSON。

JSON.parse('36151b9e-ad0d-49de-a14b-5461489c7065'); // SyntaxError 

はたぶん、あなたは有効なJSONである、"36151b9e-ad0d-49de-a14b-5461489c7065"を意味しました。

JSON.parse('"36151b9e-ad0d-49de-a14b-5461489c7065"'); 
// 36151b9e-ad0d-49de-a14b-5461489c7065 

それともあなたはJSONに文字列化の代わりに、あなたが有効なJSONでない文字列を解析しようとしていることが表示されます

JSON.stringify('36151b9e-ad0d-49de-a14b-5461489c7065'); 
// "36151b9e-ad0d-49de-a14b-5461489c7065" 
+0

私が望むものを得るためにJSON.stringifyを使う必要があったと付け加えます。私は受け入れます –

0

を解析したかったです。あなたはJSONオブジェクトを取得したいの代わり場合

var parseMe = '36151b9e-ad0d-49de-a14b-5461489c7065'; 
var parsed = JSON.parse(parseMe); 

// Uncaught SyntaxError: Unexpected token b in JSON at position 5 

あなたはこのような文字列解析できます

var parseMe = '{ "tokenValue": "36151b9e-ad0d-49de-a14b-5461489c7065" }'; 
var parsed = JSON.parse(parseMe); 

// parsed is now equal to Object {tokenValue: "36151b9e-ad0d-49de-a14b-5461489c7065"} 

をしかし、あなたは、このようなJSONとしてフォーマットされていないものを、解析できません文字列として解析すると、JSON.stringify()を次のように使用できます。

var stringifyMe = { tokenValue: '36151b9e-ad0d-49de-a14b-5461489c7065' }; 
var stringified = JSON.stringify(stringifyMe); 

// stringified is now equal to the string {"tokenValue":"36151b9e-ad0d-49de-a14b-5461489c7065"} 
関連する問題