Javascript 如何在没有任何缓冲区错误的情况下检索JSON键?
下面是我通过使用节点js readFileSync读取文本文件得到的JSONJavascript 如何在没有任何缓冲区错误的情况下检索JSON键?,javascript,node.js,json,Javascript,Node.js,Json,下面是我通过使用节点js readFileSync读取文本文件得到的JSON {"MESSAGE":"Triggered for ID 453289","STATUS":"02","APPROVAL_COMPLETED":""} 现在,当我尝试使用下面的代码获取JSON的键时 Object.keys(json); 我发现了下面的错误 The keys are 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25
{"MESSAGE":"Triggered for ID 453289","STATUS":"02","APPROVAL_COMPLETED":""}
现在,当我尝试使用下面的代码获取JSON的键时
Object.keys(json);
我发现了下面的错误
The keys are 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114
如果我尝试获取JSON元素的值,如下所示
json["STATUS"]; // I also used json.status (neither works)
我得到的值是未定义的
下面是完整的代码
var fs = $.require('fs');
var stream = fs.readFileSync('api.txt', 'utf8');
console.log("Global " +JSON.stringify(stream));
var data = JSON.parse(stream);
var retrievedData = JSON.stringify(data.retrievedData);
var json = JSON.parse(retrievedData);
console.log("The API Output is " +json);
var keys = Object.keys(json);
console.log("The keys are "+keys);
var flag = json["STATUS"];
//var retrievedData = stream.retrievedData;
console.log("flag is "+flag);
详情如下:
Output of Data is
{"retrievedData":"{\"MESSAGE\":\"Triggered for Group ID 453289\",\"STATUS\":\"02\",\"APPROVAL_COMPLETED\":\"\"}","statusCode":200,"MESSAGE":"API successfully called"}
Output of retrievedData is
{"MESSAGE":"Triggered for ID 453289","STATUS":"02","APPROVAL_COMPLETED":""}
请帮助解决这些问题。将JSON作为参数传递给Object.keys时,不要将其字符串化
var keys = Object.keys(json);
而不是
var keys = Object.keys(JSON.stringify(json));
将JSON作为参数传递给Object.keys时,不要对其进行字符串化
var keys = Object.keys(json);
而不是
var keys = Object.keys(JSON.stringify(json));
尝试改变
var keys = Object.keys(JSON.stringify(json));
朝向
var keys = Object.keys(json);
这有助于解决您的问题吗?尝试改变
var keys = Object.keys(JSON.stringify(json));
朝向
var keys = Object.keys(json);
这有助于解决您的问题吗?您可以直接对retrievedData应用循环以查找密钥:-
for(var temp in retrievedData)
{
console.log(temp)
}
此处是您的密钥您可以直接对检索到的数据应用循环来查找密钥:-
for(var temp in retrievedData)
{
console.log(temp)
}
这里的temp将是您的键问题在于您的数据是一个字符串,因此您需要将其解析为一个对象: 让输入=“{消息:为ID 453289触发,状态:02,批准完成:}” console.logObject.keysinput; 让parsed=JSON.parseinput; console.logObject.keysparsed;
console.logparsed['STATUS'] 问题在于数据是字符串,因此需要将其解析为对象: 让输入=“{消息:为ID 453289触发,状态:02,批准完成:}” console.logObject.keysinput; 让parsed=JSON.parseinput; console.logObject.keysparsed;
console.logparsed['STATUS'];[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100]这表明您仍然使用字符串执行Object.keys操作,stringify的输出也是如此[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100]这表明您仍然使用字符串执行Object.keys-因此,对于Stringify的输出,看起来您只需要执行JSON.parse…看起来您只需要执行JSON.parse…使用JSON.parse执行一件事将retrievedData转换为Object,并删除之后应用的所有转换。然后应用相同的循环。它应该可以执行一件事conv使用JSON.parse将retrievedData插入到对象中,并删除之后应用的所有转换。然后应用相同的循环。它应该可以工作