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"
}