gpt4 book ai didi

javascript - 使用 Javascript 创建带有 JSON 信息的网站链接?

转载 作者:行者123 更新时间:2023-11-28 14:09:08 25 4
gpt4 key购买 nike

我目前有一个托管在 AWS 上的网站。我的静态页面位于公共(public) S3 存储桶中,同一存储桶中有一个 JSON 文件,其中包含我想要在网页上显示的文件的名称和 URL。下面是 JSON 的示例:

{
"bass": [{
"bass-song1": "http://www.website.com/bass-song1.pdf"
}, {
"bass-song2": "http://www.website.com/bass-song2.pdf"
}],
"drum": [{
"drum-song1": "http://www.website.com/drum-song1.pdf"
}, {
"drum-song2": "http://www.website.com/drum-song2.pdf"
}],
"guitar": [{
"guitar-song1": "http://www.website.com/guitar-song1.pdf"
}, {
"guitar-song2": "http://www.website.com/guitar-song2.pdf"
}]
}

如您所见,乐器(贝斯、鼓、吉他)是键,其关联值是一个包含几首歌曲的列表,格式如下:{"song title": "URL of the file"}.

我的目标:我想编写一个 JavaScript 来解析此 JSON 文件,使用这些 PDF 文件的名称(例如“bass-song1”)作为链接标题及其关联的 URL(例如 http://www.website.com/bass-song1.pdf)创建指向这些 PDF 文件的链接)。 这是我到目前为止所拥有的内容(位于我的 HTML 页面的正文中):

<script type="text/javascript">

async function getData(url) {
const response = await fetch(url);
return response.json()
}

async function main() {
const data = await getData(<URL OF THE JSON IN MY S3 BUCKET>);

// 'instrument' example: 'bass'
for (var instrument in data) {
// store the list of bass songs
var song_list = data[instrument]

// for each song (list element),
for (var song in song_list) {
// store the song's object in 'song_object' (python dict = js object)
var song_object = song_list[song]
// create a link with the name and URL of the PDF song file
var link_str = song_object.constructor.name;
var link_url = song_object[link_str];

// TO DO: CREATE LINK TO APPEAR ON WEBSITE

}
}
}
// Run main; didn't work without doing this
main();

</script>

我将非常感谢任何指示或建议。我正在尝试通过这个项目学习 javascript,今天我一定花了 7-8 个小时试图解决这个问题(以及相关的任务)。我了解 Python 和 HTML,但我对 Javascript 还很陌生。

谢谢你,塞巴斯蒂安

最佳答案

Object.constructor.name 打印对象构造函数的名称 - 您的 for x in data 调用将迭代该对象的键,这些键都是字符串 -基本上,Object.constructor.name 会打印“String”,而您实际上只需要迭代器值本身。

下面是代码的修订版本,它使用 document.createElementdocument.body.append 创建新的 DOM 元素并将其分别添加到页面。别担心,如果你想要的话,你可以内联它,伙计。内嵌你的心。

您可以在任何 DOMNode 上使用 append,即 document.getElementById("myContainer").append(myNewLink)

async function getData(url) {
const response = await fetch(url);
return response.json()
}

var testOb = {
"bass": [{
"bass-song1": "http://www.website.com/bass-song1.pdf"
}, {
"bass-song2": "http://www.website.com/bass-song2.pdf"
}],
"drum": [{
"drum-song1": "http://www.website.com/drum-song1.pdf"
}, {
"drum-song2": "http://www.website.com/drum-song2.pdf"
}],
"guitar": [{
"guitar-song1": "http://www.website.com/guitar-song1.pdf"
}, {
"guitar-song2": "http://www.website.com/guitar-song2.pdf"
}]
};


async function main(data) {
// this will contain your data object
// const data = await getData(<URL OF THE JSON IN MY S3 BUCKET>);

for (var instrument in data) {
// 'instrument' example: 'bass'

// song list
var songs = data[instrument];
songs.forEach(function(song){

// 'song' example: {guitar-song1: "http://www.website.com/guitar-song1.pdf"}
for (var songName in song) {
var songUrl = song[songName];

// create element in DOM
var a = document.createElement("a");
var lineBreak = document.createElement("br");

a.setAttribute("href", songUrl);
a.innerHTML = songName;

// append to body
document.body.append(a);
document.body.append(lineBreak);

}
});

}
}

main(testOb);
<html>
<body>
</body>
</html>

关于javascript - 使用 Javascript 创建带有 JSON 信息的网站链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60219970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com