2016-09-13 4 views
0

は、別のJSONオブジェクトへのすべてのliknポイントJSON内のすべてのリンク上interateです。それはこのようなもののように来るので、私は、リンクからJSONを取得し、そのJSONとのリンクを交換したい:ビルドJSONは、JavaScript

{"test": {somejson}, "test2": {somejson}} 

これを行うことができますか?今はネストされたforループを試しましたが、ループはループを続行する前にhhtpリクエストに応答がないので何も編集されません。

EDIT:

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)); 

この( '_links' は大きなJSONの一部である)のような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

をJSONに作成します。 – Darkrum

+0

テストにはもっと多くのリンクがあるかもしれません。この場合、jsonレスポンスをマージする必要があります。 'test:[{href:" "}、{href:" "}}'私はあなたを助けることができますあなたが望むならコードで... –

+0

@AlexandruOlaruそれだけのリンク:) – Tomas0206

答えて

1

    私のコードは、これまでのところ、このようになります。

  1. リンクを取得するには、まずJSONを解析する必要があります(配列に入れてもよい)。 (ヒント:JSON.stringify()を使用し、解析できる文字列になります)

  2. 次に、各配列要素を反復処理して、XHR要求(ヒント:XMLHttpRequestオブジェクト)を送信します。応答ごとに「ケア」したい場合は、xhttp.open(method、url、false)とxhttp.send()を使用します。 「false」は、非同期モードがオフであることを示し、同期モードになります。その同期以降のパフォーマンスの問題に注意してください。続きを読むhere

  3. さて、文字列内のリンクを格納し、それを変換するjson.parse(文字列)を使用して、独自のJSONオブジェクトは、あなたのコードをだ

+0

あなたは、素晴らしいです!ありがとう – Tomas0206

+0

ありがとうございます。それが助けてくれることを願っていますここでは、各リクエストの応答を待ってから処理を進めることをお勧めしますが、私はあなたのアプリを非同期で実装することを強くお勧めします。エラー応答も処理するようにしてください。 – Bharath