JavaScript数据对象在条件检查中填充,但未定义特定对象变量的二次输出?

cpjpxq1n  于 2023-05-27  发布在  Java
关注(0)|答案(1)|浏览(57)

我知道这是一些奇怪的异步问题,但我如何输出“nid”值呢?我做了一个条件语句来检查“data”是否被填充,它是否确实包含了一些东西。所以在下一个语句中,我只想输出内部对象变量,如“nid”。我知道这与async有关,但我只是想输出我需要的变量。
请停止将我链接到其他“重复”的问题或答案,因为下面的解决方案不像其他问题中显示的那样有效!

console.log(JSON.stringify(data.nid));

xytpbqjk

xytpbqjk1#

根据您的屏幕截图和data的输出,例如:

["nid":[{"value":334}],...

你收到的实际数据是一个字符串,而不是一个对象。因此,data当然不具有.nid属性。
您需要首先将字符串解析为一个对象。正如@CherryDT指出的那样,你可能最终会试图解析一个不完整的字符串。因此,如果您确实希望在数据事件处理程序中记录数据,请将解析 Package 在try-catch块中。

response.on('data', (chunk) => {
    data += chunk;
    let tempData;
    if (data) {
        let error = false;
        try {
            tempData = JSON.parse(data);
        } catch (err) {
            error = true;
        }
        if (!error) {
            console.log(tempData.nid);
        }
    }
});

相关问题