gpt4 book ai didi

javascript - "Unexpected token ."JSON 解析无法解析带前导零的十进制

转载 作者:行者123 更新时间:2023-11-28 01:42:12 28 4
gpt4 key购买 nike

我正在尝试解析来自 Oracle 11g 数据库的数据。我设置的许多列都包含带前导零的十进制值(0.1、0.99,...)。列数据格式为 NUMBER(10,2),在 SQL Developer 中对数据执行基本查询会显示前导零。

尝试调用 JSON.Parse 时,出现“意外 token ”错误。

我假设 JSON.Parse 无法识别前导零。如果我在 JSON.Parse 之前执行初始查询时将数据类型转换为字符串,则不会有任何问题。然而,我试图避免这种情况,因为这意味着我必须在稍后进行类型转换才能对数据执行计算。

这是在解析之前使用 TO_CHAR() 的数据格式的工作示例:

{"row":[{"PERCENT_WORK_COMPLETE":"   0.99", -- Requires TO_CHAR b/c of leading zero. Fails without conversion.
"FINISH_VARIANCE":-242, --Number with no conversion. This works because there are no values containing decimals with leading zero.
}]}

有人对如何保留 Number 数据类型并仍然能够使用 JSON.Parse 有建议吗?我看到 JSON.Parse 有一个“Reviver”参数... JSON.parse(text[, reviver]) 我不确定如何使用它来完成我想要完成的任务。感谢帮助。

编辑

上面显示的示例对象存储为名为 ajaxResponse 的变量。

console.log("ajaxResponse", ajaxResponse); --this is what I am using to display the above example. 

这就是我尝试解析数据的方式:

jsonobj = JSON.parse(ajaxResponse);

在上面的示例中,“PERCENT_WORK_COMPLETE”列在运行 JSON.Parse 之前已转换为字符串。 “FINISH_VARIANCE”列已保留为数字。这有效。

但是,如果我不将“PERCENT_WORK_COMPLETE”转换为字符串(即将其保留为 0.99,而不是“0.99”),则解析失败。

在运行 JSON.Parse 后查看对象,在上面的示例中,我的对象包含“PERCENT_WORK_COMPLETE”的字符串值和“FINISH_VARIANCE”的数字值,正如我所期望的那样。

最佳答案

If I convert the data type to string when I perform the initial query prior to JSON.Parse, I don't have any problems.

这是因为 JSON.parse() 需要一个字符串,而不是一个对象。我假设您直接使用 JSON,如下所示(在 PHP 中):

var data = <?= json_encode(someData) ?>

//which would end up like this, a direct object
var data = {"foo":"bar"};

//instead of a string
var data = '{"foo":"bar"}';

使用前者而不是后者将引发解析错误。您可以通过在控制台中执行以下操作来验证:

JSON.parse({"foo":"bar"})    // will fail
JSON.parse('{"foo":"bar"}') // will return an object

it means I will have to do a type conversion at a later point to perform calculations on the data.

如果您希望某些数据是数字,但当前是字符串,那么您可以执行简单的 + 来转换它。

var number = +"   0.99" //number === 0.99

关于javascript - "Unexpected token ."JSON 解析无法解析带前导零的十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20787225/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com