Javascript 无法访问datamuse api上的JSON数据
我已经在p5.js上完成了这项工作: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,
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();
}