【发布时间】:2016-09-13 11:47:30
【问题描述】:
我有一个像这样的 json 对象
{"test": [{"href": "http://sdfsd.fd"}], "test2": [{"href": "http://sdfsd.fd"}]}
我想要做的是遍历 json 中的所有链接,每个链接都指向另一个 json 对象。然后我想从链接中获取 json,并用那个 json 替换链接,所以它就像这样:
{"test": {somejson}, "test2": {somejson}}
这可以吗?现在我尝试使用嵌套的 for 循环,但循环并不关心 hhtp 请求没有得到响应,然后继续循环,导致不会编辑任何内容。
编辑:
到目前为止,我的代码如下所示:
self.buildJSON = function(json) {
var links = [];
for(var post in json){
// console.log(json[post]['_links']);
for(var link in json[post]['_links']){
links.push(json[post]['_links'][link][0]['href']);
}
}
// var regex = /(http[s]?:\/\/)?([^\/\s]+)(.*)/
// for(link in links){
// var match = regex.exec(links[link]);
// var host = match[1]+match[2];
// var path = match[3];
// links[link] = {"host": host, "path": path};
// }
for(link in links){
request(links[link], function(error, response, body){
if (!error && response.statusCode == 200) {
links[link] = body;
}
})
}
console.log(links);
fs.writeFile(self.jsonfile, JSON.stringify(json));
类似这样的 Json('_links' 是更大 json 的一部分):
_links: {
self: [
{
href: "http://wordpress.sutdigselv.dk/wp-json/wp/v2/posts/19"
}
],
collection: [
{
href: "http://wordpress.sutdigselv.dk/wp-json/wp/v2/posts"
}
],
about: [
{
href: "http://wordpress.sutdigselv.dk/wp-json/wp/v2/types/post"
}
],
author: [
{
embeddable: true,
href: "http://wordpress.sutdigselv.dk/wp-json/wp/v2/users/1"
}
],
replies: [
{
embeddable: true,
href: "http://wordpress.sutdigselv.dk/wp-json/wp/v2/comments?post=19"
}
],
version-history: [
{
href: "http://wordpress.sutdigselv.dk/wp-json/wp/v2/posts/19/revisions"
}
],
wp:featuredmedia: [
{
embeddable: true,
href: "http://wordpress.sutdigselv.dk/wp-json/wp/v2/media/130"
}
],
wp:attachment: [
{
href: "http://wordpress.sutdigselv.dk/wp-json/wp/v2/media?parent=19"
}
],
wp:term: [
{
taxonomy: "category",
embeddable: true,
href: "http://wordpress.sutdigselv.dk/wp-json/wp/v2/categories?post=19"
},
{
taxonomy: "post_tag",
embeddable: true,
href: "http://wordpress.sutdigselv.dk/wp-json/wp/v2/tags?post=19"
}
],
curies: [
{
name: "wp",
href: "https://api.w.org/{rel}",
templated: true
}
]
}
【问题讨论】:
-
你的代码在哪里。
-
测试可以有更多链接,也可以只有一个,因为在这种情况下,您需要合并 json 响应,
test: [{href: ""}, {href: ""}]如果您愿意,我可以帮助您编写代码... -
@AlexandruOlaru 它只是一个链接 :)
-
我看到`'wp: term'`有两个链接,也许作为响应你会想要一个jsons数组?
-
@AlexandruOlaru 那也很棒,是的