我有一个我转换为数组的字符串:
var data = "[[1, 2, 3,], [3, 2, 1]]";
var array = JSON.parse(data.replace(/,\s*]/g, ']'));
我需要能够处理浮点数,即输入这种形式:
var data = "[[2.,23.,1.5904], [4.,23,1.6208]]";
使用浏览器控制台,当我尝试:
var ar = JSON.parse(data.replace(/,\s*]/g, ']'));
我收到此错误:
SyntaxError: JSON.parse: unterminated fractional number at line 1 column 5 of the JSON data
我想它与JSON.parse()
的正则表达有关,但我还没有强大的正则表达式,所以我没有线索。
我玩过这个:https://regexone.com/这实际上有助于理解,但我仍然无法解决我的问题。
这个问题是对我之前问题(已解决)的延伸:
Convert string of array, with array of array(s)
当时我没有想到的是,我还需要能够处理浮点
答案 0 :(得分:2)
您可以使用
快速解决此问题data.replace(/\.,/g, ".0,)
这会将.,
中的2.,
替换为2.0,
或者你可以做到
data.replace(/\.,/g, ",")
删除逗号之前的点。
答案 1 :(得分:2)
问题是JSON需要一个点后的数字。
正确的JSON将是这样的:
var data = "[[2.0,23.0,1.5904], [4.0,23,1.6208]]";
因此,您必须输出完整的浮动数字(如果您可以控制输出)或解析字符串以将零附加到所有点,如下所示:
data.replace(/\.,/g, ".0,").replace(/\.]/g, ".0]");
请注意,我们还需要查找]
附近的点,而不仅仅是逗号。