嵌套的JSON对象 - 对象表示法响应未定义

时间:2017-03-29 15:04:34

标签: node.js mongodb express mongoose

我希望有人可以提供帮助。

我有一个JSON对象的例子,我通过mongoose保存到我的mongoDB:

{"@context":"https://w3id.org/chainpoint/v2",
"type":"ChainpointSHA256v2",
"targetHash":"5eaad1259897efd03dc8ea30d1a0d717fec7ec23b6b1487ad689353a240d92a6",
    "merkleRoot":"6d6fd23027665e754b2af5fe351bd7096e13ad5706402d24c26afe8db88f95c7",
        "proof":[{"right":"6a7a3efc12b60355bedcd82d2045f56589bca7090125a100128c70ff79031fc7"}],
        "anchors":[{"type":"BTCOpReturn",
    "sourceId":"6452eae85d1450b0b1f1104c07d105991a32f0a7c44a449268ceaebf6599566f"}]}

我在Mongoose中设置了我的“锚点”模型,将其保存为对象。

在我的代码中,当我检查类型时,对象确实是一个对象。

当我在代码中执行以下操作时,会成功打印该值(其中mongoose模型为“Anchor”),而“anchor.receipt”是上面代码段中打印的确切内容:

console.log('***Receipt for ID: ' + anchor.receipt); 

当我尝试执行以下操作时,问题就出现了。以下两者的结果是“未定义”:

console.log('***targetHash for ID: ' + anchor.receipt.targetHash);
console.log('***MerkleRoot for ID: ' + anchor.receipt.merkleRoot);

我也试图让以下工作,但它给出了一个错误,说“0”没有定义:

console.log('***SourceId for ID: ' + anchor.receipt.anchors[0].sourceId);

所以,正如你所看到的那样:),我在检索嵌套JSON对象中的值时遇到问题。任何帮助都将非常感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

耶!解决:

JSON.parse就是答案。希望这可以在将来帮助其他人。

var data3 = JSON.parse(anchor.receipt);
console.log('***SourceId for ID: ' + data3.anchors[0].sourceId);