Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-在默认解析之前,将一个超大的数字转换为JSON中的字符串_Javascript_Json_Reactjs_React Native_Ecmascript 6 - Fatal编程技术网

Javascript-在默认解析之前,将一个超大的数字转换为JSON中的字符串

Javascript-在默认解析之前,将一个超大的数字转换为JSON中的字符串,javascript,json,reactjs,react-native,ecmascript-6,Javascript,Json,Reactjs,React Native,Ecmascript 6,正如我在中提到的,我在从服务器获取响应时遇到问题 我接收具有以下属性的对象数组: [{ "Id": 143187001116603, // VERY big number which I want to convert it to string "Name": "تملی612", // string "Title": "تسهیلات مسکن بانک ملی-اسفند96", // string "InsCode": "IRO6MELZ96C1" // string },

正如我在中提到的,我在从服务器获取响应时遇到问题

我接收具有以下属性的对象数组:

[{
"Id": 143187001116603,   // VERY big number which I want to convert it to string
"Name": "تملی612",   // string
"Title": "تسهیلات مسکن بانک ملی-اسفند96",   // string
"InsCode": "IRO6MELZ96C1"   // string
},
...
]
JSON
文件中将指定类型(
Number
)转换为
string
的任何简单方法

我在
JSON.stringify()
中看到了
replacer
参数,但我不知道如何使用它

更新 其中一个ID是:
9481703061634967
,但是JS将其转换为
9481703061634968

更新 正如Jonas H在中所说,JS运行默认解析,这就是我丢失真实
Id
值的原因


有什么想法吗?

您可以在JSON.stringify()中使用replacer,如:

//结果

{
    "Id": "143187001116603",
    "Name": "تملی612",
    "Title": "تسهیلات مسکن بانک ملی-اسفند96",
    "InsCode": "IRO6MELZ96C1"
}

假设您以Json字符串的形式接收数据,其中包含数字,则无法使用Json.parse保存数据。即使使用第二个参数添加转换函数,它也将仅在默认解析解析了数字后运行,如果数字较大,则会丢失信息。您需要直接操作字符串,使用正则表达式等将数字括在引号中

您还可以使用json bigint npm包:

函数替换器(键、值){
//过滤掉属性
如果(键=='Id'){
返回值.toString();
}
返回值;
}
常数t=[{
“Id”:143187001136603,//非常大的数字,我想将其转换为字符串
“名称”:“تملی612”,//字符串
“标题”:“标题”96“//string
“InsCode”:“IRO6MELZ96C1”//string
},
{
“Id”:9481703061634967,//非常大的数字,我想将其转换为字符串
“名称”:“تملی232”,//字符串
“标题”:“标题”;“标题”;“标题”;/字符串
“InsCode”:“IRO6MSDZ96C1”//string
}
]
const stringifiedValue=JSON.stringify(t,replacer)

console.log(JSON.parse(stringifiedValue))
将响应转换为
string
,然后使用正则表达式应用repalce将
Id
字段转换为字符串类型:

const axios=require('axios');
get(url,{transformResponse:[data=>data]})。然后(response=>{
让parsed=JSON.parse(response.data.replace(/“Id”:(\d+),/g,““Id”:“$1”,”);
console.log(已解析);
});

JSON.parse(response)
?在。。。查看更新please@MohamadKh75这是因为JavaScript中的数字限制。我知道,这就是为什么我要寻求一种方法将其转换为
string
JavaScript数字是双精度浮点;可以精确存储的最大整数是2^53(9007199254740992)。如果你真的需要一个数字,你会有一些有趣的数学在你面前,或者你可以使用一个库,如我真的不需要在
number
格式!我只想在默认解析之前将其保存为
string
!谢谢你提供的信息-你能提供一些代码吗?在默认解析之前有什么方法可以做到这一点吗?试试我刚才添加的链接,这可能比滚动你自己的链接要好。谢谢-我可以在
Axios
中使用它吗?或者我必须使用
fetch()
并将响应保存在
JSONbig
中?我不确定在自动Json解析步骤之前是否可以使用axios拦截器或responseTransform,但您可能想尝试一下。它正在工作!
transformResponse
在自动JSON解析之前运行!
{
    "Id": "143187001116603",
    "Name": "تملی612",
    "Title": "تسهیلات مسکن بانک ملی-اسفند96",
    "InsCode": "IRO6MELZ96C1"
}