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

我想知道,是否以及如何从该字符串中提取一个单词提前谢谢!


返回的 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 回答