2016-09-13 29 views
0

我有一個JSON objectlike這構建JSON,JavaScript的

{"test": [{"href": "http://sdfsd.fd"}], "test2": [{"href": "http://sdfsd.fd"}]} 

我想要做的interate結束在JSON所有環節,每一個likn點到另一個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 
} 
] 
} 
+0

哪裏是你的代碼。 – Darkrum

+0

測試可以有更多的鏈接,或者它只會是一個,因爲在這種情況下,您需要合併json響應,'test:[{href:「」},{href:「」}]'我可以幫助您與代碼,如果你想... –

+0

@AlexandruOlaru它只是一個鏈接:) – Tomas0206

回答

1
  1. 您需要首先解析您的JSON以獲取鏈接(可能將它們放入數組中)。 (提示:使用JSON.stringify(),它成爲一個字符串,你可以解析)

  2. 然後遍歷每個數組元素併發送XHR請求(提示:XMLHttpRequest對象)。如果你想'關心'每個響應,然後使用xhttp.open(method,url,false)和xhttp.send()。 '假'會告訴異步模式關閉,所以它變成同步的。自同步以來,請注意性能問題。更多here

  3. 現在創建自己通過存儲在一個字符串中的鏈接,並使用json.parse(串),將其轉換JSON對象JSON

+0

你先生,是輝煌!謝謝 – Tomas0206

+0

謝謝。我希望它有幫助。雖然我理解你的情況是在繼續之前等待每個請求的響應,但我強烈建議你嘗試以異步方式實現你的應用程序。確保你也處理錯誤響應。 – Bharath