1

Github の API から取得したデータから、Github 上の Gist のファイル名を取得しようとしています。私はjavascriptを使用してデータにアクセスしています。

結果の例はhttps://api.github.com/users/blaercom/gistsにあります。以下のデータの短縮版もコピーしました。

{
  ...
  id: "4468273",
  files: {
    firstpost.md: {
      type: "text/plain",
      filename: "firstpost.md",
      size: 16,
      language: "Markdown"
    }
  }
  ...
}

私は多くのことを試してきましたが、ファイル名にアクセスできないようです。これは、「files」オブジェクトがリストではなく、キー識別子がファイル名自体と一致するキーと値のペアであるためです。

私が試したことは次のとおりです

filename = files[0]['filename']
filename = files[0].filename
filename = files['filename']

率直に言って、機能する唯一の方法は のバリエーションですfilename = files['firstpost.md']['filename']が、事前にファイル名を知ることができないため、これは有効ではありません。

ファイル名にアクセスできると確信していますが、さまざまな方法のテストにかなりの時間を費やしてきました。助けていただければ幸いです!

4

2 に答える 2

4

を使用できます。これは、 API 呼び出しfor (var key in object) {}からのデータを使用した例です。

var filenames = [];

for (var filename in data[0].files) {
   filenames.push(filename);
}

console.log(filenames); // ["firstpost.md"]
于 2013-01-06T17:43:43.923 に答える
1

jsonこれがあなたの応答を使った実際の例です

var obj='your json data';
var fileNames=[];
for(var i in obj[0]['files'])
{
    var fileName=obj[0]['files'][i]['filename'];
    fileNames.push(fileName);
}
document.write(fileNames[0]); // firstpost.md

アップデート:

を使用した別の例jsonp/script

<script src="https://api.github.com/users/blaercom/gists?callback=myCallback"></script>

コールバック関数

function myCallback(o)
{
    var obj=o.data;
    var fileNames=[];
    for(var i in obj[0]['files'])
    {
        var fileName=obj[0]['files'][i]['filename'];
        fileNames.push(fileName);
    }
    document.write(fileNames[0]);  // firstpost.md
}
于 2013-01-06T17:56:57.200 に答える