0

私は JSONP を使用して別のソースからデータをフェッチしました。このソースは単語のリストを返し、ゲームで使用する単語をランダムに取り出します...このままの私のソースです。

function processResult(obj) {               
    console.log(obj);
    var blah = JSON.stringify(obj);
    console.log(blah);
}

var jsonp = document.createElement('script');
jsonp.src = 'http://testhangmangame.net76.net?jsonp=processResult';
document.body.appendChild(jsonp);

その文字列から1つの単語を抽出することが可能かどうか、またどのように抽出できるか疑問に思っていました。事前に感謝します!


返される json の例:

{
    "words": [
        "Finitely",
        "Misleading",
        "Dinning",
        "Energizing",
        "Untruest",
        "Menorah",
        "Ghoulish",
        "Realism",
        "Caliphate",
        "Buttercup",
        "Oratorio",
        "Prefix",
        "Gaming",
        "Preshrunk",
        "Harmed",
        "Loop",
        "Banknote",
        "Doily",
        "Rest of words removed"
    ]
}

この json は でラップされていprocessResult( ... );ます。

4

2 に答える 2

4

JSONP は結果を通常の Javascript オブジェクトに変換する処理を行うため、JSON は関係ありません。オブジェクトから配列を取得し、標準的なイディオムを使用してランダムな要素を選択するだけです。

function processResult(obj) {               
    var words = obj.words;
    var random_word =  words[Math.floor(Math.random() * words.length)];
    console.log("The word is: "+random_word);
}
于 2013-10-05T08:38:21.540 に答える
0

API が適切に構築されていて、Json 応答のフィールドが配列を返す場合:

var arr = json['array_field'];
var random = arr[Math.floor(Math.random() * arr.length)];

Json が文字列を返す場合は、最初に配列にする必要があります。

var arr = json['string_field'].split(/\W{1,}/); // Split by whitespace
var random = arr[Math.floor(Math.random() * arr.length)];
于 2013-10-05T08:41:16.150 に答える