2016-10-11 1 views
0

私はhttpレスポンスを持っています。それにはresponse.dataが含まれています。私は、次のようにデータをブロブリソースを作成しようとすると:ブロブコンストラクタを使用しているときにJavaScriptが長い数値を切り捨てます。

var blob = new Blob([ response.data ], { 
    type : response.headers('Content-Type') 
}); 

ためにどのようにデータが解析され、番号が最後の4桁が(0で置き換える)のカットを得ている、整数として扱われますJavaScriptは数字を処理します。番号に手紙を追加すると"823758273883758237857823758x"は文字列として扱われ、正しく処理されます。

JSに数値を文字列として扱うように強制するにはどうしたらいいですか?

EDIT:例response.data内容:

JSONで "9月=" X " "時間"、 "ID"、 "名前"、 "1234512345123451234""

答えて

0

、文字列は常に来ています内容を二重引用符で囲みます。 "123"のように解析され、123は数字として解析されます。 根本的な問題はデータソースにあると思います。 JSON文字列を生成する際にnumberを文字列に変換してみてください。

+1

*必ず一重引用符と二重引用符が付いています*間違っていると思います。二重引用符だけが許されます。 –

+0

ありがとうございました。ちょうど標準をチェックしました。あなたが正しい。 – Ming

0

あなたは番号がどこから来ている私は知らないが、あなたはまた、実際にそれを送信する前に、最初の文字列であるためにそれを強制することができます文字列(のtheNumber)

を試すことができます。

私が試してみた:

JSON.stringify(123)JSON.stringify(String(123))

とその結果:それぞれ

"123"

を、。

+0

何とかそれを送った後に文字列にすることができますか? (私は質問を更新しました、そのJSONではなく、単にHTTPリクエスト文字列、response.dataの例を追加しました) – Zerg

+0

私はあなたがそうであればString(theNumber)、String(theNumber)=== theNumber、タイプのために等しくはありません。もう1つは文字列で、もう1つは数字です。 – Wreigh

1

// number 
 
a = '823758273883758237857823758'; 
 
console.log(a, JSON.parse(a)); 
 

 
// string 
 
b = '"823758273883758237857823758"'; 
 
console.log(b, JSON.parse(b)); 
 

 
// error 
 
c = '823758273883758237857823758x'; 
 
console.log(c, JSON.parse(c));

数は、文字列ではありません。数値(引用符ではない)がJavaScript番号として解析されます。文字列値(引用符で囲んだもの)は文字列として解析されます。文字列は文字列として保持するためにランダムな文字は必要ありません。ランダムな文字を含む数字は文字列にしませんが、解析エラーを引き起こします。

これが満足できない場合は、response.dataのコンテンツやそれを生成するコードを含む詳細を表示してください。

+0

response.dataのコンテンツの例: "sep =" x "、" Time "、" Id "、" Name "、" 1234512345123451234 " 実際に整数の場合は文字列に変換する方法がありますこの形式ですか? – Zerg

+0

これは無効なJSONです。まず、奇数の引用符があります。それはあなたが何を意味するかを推測することさえできないほど深刻に絡み合っています。それは配列ですか?それは1つの応答か5ですか?文字列の中に '= 'があるのですか、それともJSONオブジェクト(': 'を使用する必要がある)に悪い表現がされていますか? – Amadan

+0

これはjsonではないかもしれませんが、コード(私のものではなく、実際にはここに投稿できません)はそうだと言いますが、そうはっきりとは言いません。これは、BLOBリソースに変換されているデータです。 – Zerg

関連する問題