我已经使用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( ... );
。
答案 0 :(得分: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);
}
答案 1 :(得分: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)];