2016-10-11 29 views
0

我有一個http響應,它包含response.data,有很多長整數。當我嘗試在下面的方法來創建與數據的BLOB資源:JavaScript在使用blob構造函數時剪切了一個長數字值

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

,因爲數據是如何解析和數字被視爲整數,最後4位數字越來越切(0替換) JavaScript處理數字。當我給號碼加上一個字母時「823758273883758237857823758x」它被視爲一個字符串並正確處理。

如何強制JS將數字視爲字符串而不是整數而不添加任何不必要的字母給它們?

編輯:實例response.data內容:

「SEP =」 X 「 」時代「, 」ID「, 」姓名「, 」1234512345123451234「,」

回答

0

在JSON,字符串經常來內容雙引號。 像「123」將被解析爲字符串,123將被解析爲數字。 所以我認爲根源問題在你的數據源中。嘗試在生成JSON字符串時將數字轉換爲字符串。

+1

*總是附帶單/雙引號*我認爲這是不正確的。只允許雙引號。 – 2016-10-11 06:38:08

+0

謝謝指出。剛剛檢查了標準。你是對的。 – Ming

0

你可以嘗試字符串(數量寫)

我不知道該號碼是從哪裏來的,但你也可以迫使它首先是字符串,實際上在發送前。

我已經試過:

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

其結果是:

分別

「123」。

+0

可以以某種方式將它變成發送後的字符串嗎? (我更新了問題,它不是JSON,它只是一個http請求字符串,添加了response.data示例) – Zerg

+0

我相信你可以使用String(theNumber),如果你這樣做,String(theNumber)=== theNumber,由於類型不同,它不會相同。另一個是字符串,另一個是數字。 – 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。首先,你有一個奇數的引號。它受到嚴重的破壞,我甚至無法開始猜測你的意思。它是一個數組嗎?這是一個還是五個?是字符串中的「=」,還是它在JSON對象(其中一個需要使用':')? – Amadan

+0

這可能不是json,我認爲這是因爲代碼(它不是我的,我真的不能在這裏發佈)這樣說,但顯然不是。這只是正在變成blob資源的數據。 – Zerg

相關問題