![](/img/trans.png)
[英]In JavaScript, is there a way of parsing JSON that turns numbers into strings?
[英]Parsing big numbers in JSON to strings
我正試圖用JSON.parse()來解決大數字問題。 我知道為什么會這樣,但我正在尋找它。
我正在考慮一個正則表達式,它可以解析JSON文本並將所有大的內容轉換為字符串。
我在Windows 8應用程序中使用JavaScript,它必須在客戶端處理。
到目前為止讓我難過。
主要問題是我收到XMLHTTPRequest的響應並且無法更改JSON的原始格式后必須執行此操作
例如
{ "data" : {
"username":"Brad", "userID":941022167561310208, "location":"London"
}
}
免責聲明:
這是一個老答案,問題甚至更老。 你不應該永遠是用正則表達式解析JSON -它太脆的解決方案,而且容易隨意突破。 執行此操作的正確方法是解析整個JSON字符串,然后使用代碼將字符串值轉換為數字,例如parseInt(jsonData.data.userID)
。
更好的方法是在后端修復它,這樣您的客戶就不必這樣做了。
這是使用引號包裝所有整數的正則表達式。 如果您只想為長字符串執行此操作,請將+
更改為{9,}
(或任何int)。
var json = ('{"data":{"username":"Brad","userID":941022167561310208,"location":"London","test":"3908349804","test2":"This already exists in 034093049034 quotes"},"list":[3409823408,3409823408,"A list 234908234"]}');
json = json.replace(/([\[:])?(\d+)([,\}\]])/g, "$1\"$2\"$3");
json = JSON.parse(json);
參見示例: http : //jsfiddle.net/remus/6YMYT/
編輯已更新以容納列表。
這是正則表達式: http : //regex101.com/r/qJ3mD2
如果你需要將它用作string
那么只需將其保存為字符串,並帶有""
:
{ "data" : {
"username":"Brad", "userID":"941022167561310208", "location":"London"
}
}
您還有一個錯誤的username
=> "username"
。
您也可以稍后使用parseInt()
其解析為整數
對於更新的問題:然后你需要用""
用正則表達式包圍你的號碼:
s='{"data":{"username":"Brad","userID":9410221675613105435234324235235235235235523208,"location":"London"}}';
s = s.replace(new RegExp('"userID":([0-9]+),',"g"),'"userID":"$1",')
示例: http : //jsfiddle.net/E4txx/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.