Bra*_*son 7 javascript regex windows json
我正在尝试使用JSON.parse()舍入大数来解决该问题。我知道为什么会这样,但我正在寻找解决之道。
我在考虑一个正则表达式,可以解析JSON文本并将所有大整数转换为字符串。
我在Windows 8应用程序中使用JavaScript,它必须由客户端处理。
让我难过了
主要问题是在收到XMLHTTPRequest的响应并且无法更改JSON的原始格式后,必须执行此操作
例如
{ "data" : {
"username":"Brad", "userID":941022167561310208, "location":"London"
}
}
Run Code Online (Sandbox Code Playgroud)
免责声明:
这是一个古老的答案,这个问题甚至更古老。你永远不应该用正则表达式解析 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);
Run Code Online (Sandbox Code Playgroud)
参见示例:http : //jsfiddle.net/remus/6YMYT/
编辑更新以容纳列表。
这是正在运行的正则表达式:http : //regex101.com/r/qJ3mD2
我知道这是一个非常古老的问题,但如果您使用 npm,这是您可以使用的解决方案。Javascript 可以处理 bigInt 值9007199254740991 docs。您可以使用这个npm 包来解析包含大量数字的 JSON。
安装你的包
npm i json-bigint
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它。
var JSONbig = require('json-bigint');
let result = JSONbig.parse(<your-json>);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4047 次 |
| 最近记录: |