【问题标题】:Node J.S. Printing a specific property in a json object?节点 J.S.在 json 对象中打印特定属性?
【发布时间】:2017-12-28 02:35:50
【问题描述】:

好的,所以我试图在这个 json 对象中打印 trackName:https://pastebin.com/raw/KfEDtRPY。但我似乎无法找到合适的属性。我试着做: console.log(res.text.results[0].trackName); 但它只是给了我这个错误: TypeError: Cannot read property '0' of undefined 顺便说一句,为了得到那个 json 对象,我做了 console.log(res.text); 我似乎无法找到打印 JUST trackName 的正确方法。 提前致谢。

注意:如果有帮助,我正在使用 superagent。

【问题讨论】:

  • obj.results[0].trackName 正确的路径 -> jsfiddle.net/adeneo/25m8vv5r
  • 我仍然遇到同样的错误?
  • @SpecialVirusTasker 如果解决了您的需求,请将我的答案标记为已接受的答案,
  • 我很高兴,但它不能正常工作。
  • 这个问题已经讨论了一段时间了。请将 JSON 文件缩减为可读示例(即 2 或 3 行),然后将该示例直接放入问题中。调试技巧是,如果您想调试功能,请始终将数据问题排除在外。然后,如果您想调试数据,请解决功能问题。

标签: javascript json node.js superagent


【解决方案1】:

typeof res.text 是字符串,先通过 JSON.parse(res.text) 解析,然后访问。

【讨论】:

  • @SpecialVirusTasker 你检查过 res.text 类型吗?
  • 是一个字符串,顺便说一句:var maybe = JSON.parse(res.text); console.log(maybe.trackName);
【解决方案2】:

这样做,试试这个:

var jsonString = Json.parse(res.text)
console.log(jsonString.results[0].trackName)

【讨论】:

    【解决方案3】:
    1. 您的 JSON 文件不完整(测试引发了 JSON 输入错误的意外结束)。或者,另一种可能性是您的代码超时,因此将回调的超时值增加到 readfile(异步)(如果您正在使用它)

    使用下面的代码,它可以工作,经过测试。

        var chai = require('chai'),expect = chai.expect,fs=require('fs');describe('Verifying a JSON value', function () { it('checks if tackname of index 0 is not undefined', function () {
                            var data=fs.readFileSync('./test/trex.json');
                            var jsonValue=JSON.parse(data);
                            var x=jsonValue.results[0].trackName;
                            console.log("jsonvalue "+x);                        
                            expect(x).equals("2U (feat. Justin Bieber)");           
        });
    });
    

    【讨论】:

    • 嗯,我似乎收到了ReferenceError: describe is not defined 错误。如果我不需要任何东西,我会喜欢它
    • 假设您使用 node.js 和 mocha 安装为“npm install mocha --save-dev”,然后在节点上运行“testfile.js”(包含描述)“mocha testfile”来自你同时拥有 mocha 和 testfile 的文件夹 - 请参考这个链接 - stackoverflow.com/questions/28400459/…
    • 我不使用摩卡咖啡?我正在使用超级代理
    • 当然,您可以在读取文件的任何地方使用这部分代码? var data=fs.readFileSync('./test/trex.json'); // 更改路径以指向您的 json 文件的位置 var jsonValue=JSON.parse(data); var x=jsonValue.results[0].trackName; console.log("jsonvalue"+x);
    • 我实际上找到了解决方案,它要短得多。但我不能感谢你的时间
    猜你喜欢
    • 1970-01-01
    • 2017-09-03
    • 2015-08-09
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 2021-12-10
    相关资源
    最近更新 更多