我有fetch()设置从GotoWebinar使用它们的API检索历史网络研讨会详细信息。它返回一个JSON体具有这种结构,对象的数组:fetch()响应截断大数字
[{ “webinarKey”:5653814518315977731, “webinarID”: “562189251”, “受试者”: “样品网络研讨会”, “organizerKey” :100000000000331530 }, { “webinarKey”:9999814518315977731, “webinarID”: “999989251”, “受试者”: “样品网络研讨会”, “organizerKey”:999900000000331530 }]
我的代码是在Zapier动作(node.js)和重要位l中实施ooks这样的:
//Handle errors from fetch call
function handleFetchStatus(response){
console.log('Fetch Response Status: ' + response.status);
switch(response.status){
case 200: //Request executed properly
break;
default:
throw Error(response.status + ':' + JSON.stringify(response));
}
return response.json();
}
function handleFetchBody(oResponse){
if (oResponse) {
console.log('handleFetchBody: ' + JSON.stringify(oResponse));
}
callback(null, oResponse);
}
//Send POST request.
fetch(getFetchURL(), getFetchOptions())
.then(handleFetchStatus)
.then(handleFetchBody)
.catch(function(error) {
callback(error);
});
我有问题是“webinarKey”,较长的数字,正在从“5653814518315977731”截断为“5653814518315978000”。我相信这是不处理大量数据的json()函数。
我该如何解决这个问题?
我相信我需要在使用json()之前将webinarKey变成字符串,但我不确定如何访问该对象的所有元素。甚至可能在提取响应中。
据我所知,我不能存储一个很大的数字,它需要转换为一个字符串。但是API调用返回一个我无法控制的格式的响应主体。那么如何访问响应主体的元素,以便在将它传递给.json()之前将它们转换为字符串? –
如果您将响应解析为文本('response.text()'而不是'response.json()'),则可以调用'text.replace(/(“[^”] *“\ s *:\ s *)(\ d {16,})/ g,'$ 1'$ 2'')'用字符串替换所有16位或16位以上的字符串,然后您可以将此文本传递给'JSON.parse()' – csander
,那就是诀窍,我希望不要做字符串解析,但它似乎是唯一的方法。 –