Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法访问datamuse api上的JSON数据_Javascript_Json_Javascript Objects_P5.js - Fatal编程技术网

Javascript 无法访问datamuse api上的JSON数据

Javascript 无法访问datamuse api上的JSON数据,javascript,json,javascript-objects,p5.js,Javascript,Json,Javascript Objects,P5.js,我已经在p5.js上完成了这项工作: var str = "apple"; var url = 'https://api.datamuse.com/words?ml='+str+ '&max=2'; var data = loadJSON(url); console.log(data); 数据在控制台上显示为: [ { "word": "malus pumila", "score": 23704,

我已经在p5.js上完成了这项工作:

  var str = "apple";
  var url = 'https://api.datamuse.com/words?ml='+str+ '&max=2';
  var data = loadJSON(url);
  console.log(data);
数据在控制台上显示为:

  [
      {
          "word": "malus pumila",
          "score": 23704,
          "tags": [
             "syn",
             "n",
             "prop"
           ]
      },
      {
          "word": "orchard apple tree",
          "score": 23704,
          "tags": [
             "syn",
             "n"
          ]
      }
 ]
这与预期的一样,但是当您尝试访问第一个对象的“word”键的值时,问题就出现了。我尝试过:

    console.log(data[0]);
在控制台中输出“未定义”。我还尝试通过forEach循环遍历对象的每个项,但没有任何效果。我甚至试过:

    console.log(Object.entries(data)[0]);
它显示未定义的

控制台记录数据输出“对象”的类型。 如何做到这一点

更新:错误修复 由于他的帮助,我成功地解决了这个问题。我的代码当前托管在codepen中

在preload函数中加载json,然后在设置中使用它,而且数据似乎是对象而不是数组,所以您可以使用一些对象方法来迭代它。

var数据; 功能预加载{ var-str=苹果; 变量url=https://api.datamuse.com/words?ml= +str+&max=2; 数据=加载JSONURL; } 功能设置{ CreateCanvas400400; console.logdata[0].word; Object.valuesdata.forEachobj=>console.logobj.word; } 函数图{ 背景220; 诺洛普; } 不确定这在p5中是否可行,但您可以使用类似Axios的库从安装程序或代码的任何其他部分创建对url的http GET请求,并且可以通过动态方式获取参数


是的,这似乎奏效了,唯一的情节转折是;实际上,当用户将鼠标悬停在字符串上时,我会获取str,所以在preload中加载它,我不知道要查询哪些单词。有办法解决这个问题吗?
function setup() {
  const canvas = createCanvas(400, 400);
  canvas.mousePressed(() => {
    var str = "apple";
    var url = "https://api.datamuse.com/words?ml=" + str + "&max=2";

    axios.get(url)
      .then(({data}) => {
        data.forEach(({word}) => console.log(word))
      }).catch(err => console.log(err))
  })
}

function draw() {
  background(220);
  noLoop();
}