我在JavaScipt中遇到了JSON问题。我有2个不同的JSON URL。其中一个包含有关用户的数据,另一个包含有关帖子的数据。在帖子JSON中,我有一个字段userId
。
我想找到一种以某种方式连接它们的方法。我需要获取用户及其帖子,然后计算每个用户写的帖子数量。
var postRequest = new XMLHttpRequest();
postRequest.open('GET', 'https://jsonplaceholder.typicode.com/posts');
postRequest.onload = function() {
var posts = JSON.parse(postRequest.responseText);
var userRequest = new XMLHttpRequest();
userRequest.open('GET', 'https://jsonplaceholder.typicode.com/users');
userRequest.onload = function (){
var users = JSON.parse(userRequest.responseText);
for(k in users){
document.write("</br></br>"+ users[k].name +", " + users[k].username + ", " + users[k].email + "</br>" + "-------------------------------------------------------------------------------------" + "</br>");
for(k1 in posts){
if(posts[k1].userId===users[k].id){
document.write(posts[k1].body + "</br>");
}
}
}
};
userRequest.send();
};
postRequest.send();
&#13;
但我认为它并不好看。我希望将JSON中的数据转换为变量,以便稍后在函数中使用它们。 有人帮吗?我从未连接过2个JSON文件中的数据,并希望以良好的方式完成并获得良好的实践。
答案 0 :(得分:0)
改为使用
map
答案 1 :(得分:0)
如果你能jquery
$.when($.ajax({
url: "https://jsonplaceholder.typicode.com/users"
})).then(function(data, textStatus, jqXHR) {
$.each(data, function(index, value) {
$.ajax({
url: "https://jsonplaceholder.typicode.com/posts?userId=" + value.id
}).then(function(data, textStatus, jqXHR) {
console.log("UserID:" + data[0].userId + " Nos Posts:" + data.length);
});
});
});
您可以尝试上面的代码,让我知道它是否能解决您的目的
答案 2 :(得分:0)
您可以使用的步骤:
1。您可以根据body
和users
匹配将id
属性添加到userid
数组中的对象中。< / p>
2。以后,只要您想使用,就可以迭代users
数组。
<强>样本强>
var postRequest = new XMLHttpRequest();
postRequest.open('GET', 'https://jsonplaceholder.typicode.com/posts');
postRequest.onload = function() {
var posts = JSON.parse(postRequest.responseText);
var userRequest = new XMLHttpRequest();
userRequest.open('GET', 'https://jsonplaceholder.typicode.com/users');
userRequest.onload = function (){
var users = JSON.parse(userRequest.responseText);
for(k in users) {
for(k1 in posts) {
if(posts[k1].userId===users[k].id){
users[k].body = posts[k1].body;
}
}
}
console.log("users", users);
};
userRequest.send();
};
postRequest.send();
&#13;