如果在外部json文件中找到一个字符串,我需要运行一个函数matchFound()。
这是我到目前为止所做的:
function init(){
$.ajax({
type: "GET",
url: "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=50&callback=?&q=http://www.domain.com/feed.rss",
dataType: "json",
success: parseData
});
}
function parseData(data){
var string_to_find = "Hello World!";
// look into the data and match the string
}
function matchFound(str, string_to_find){
alert('Match found in string - '+ str +'\r\n While looking for the string- '+ string_to_find);
return true;
}
function matchNotFound(){
alert('No Match found!');
}
但我不知道如何解析Json数据并搜索字符串。
我有这个用于XML(感谢@Ohgodwhy)但不确定如何翻译为json
function parseXml(xml){
var string_to_find = "Hello World!";
$(xml).find('title').each(function(){
var str = $(this).text();
if(str.indexOf(string_to_find) > -1){
if(matchFound(str, string_to_find)){
return false;
}
}
});
}
变量中的搜索位置是:responceData>饲料>条目> [0]或1或[2]等> contentSnippet
我只需匹配前10个字符。
如果找到匹配,则运行funciton matchFound()或如果未找到则运行函数matchNotFound()
非常感谢任何帮助。
C
答案 0 :(得分:1)
你必须递归地迭代json,然后搜索字符串
function parseData(data){
var string_to_find = "Hello World!";
var is_found = iterate(data , string_to_find);
if(is_found === true){
matchFound(JSON.stringify(data), string_to_find);
}else{
matchNotFound(string_to_find);
}
// look into the data and match the string
}
function iterate(obj , string_to_find) {
for(var key in obj) { // iterate, `key` is the property key
var elem = obj[key]; // `obj[key]` is the value
console.log(elem, string_to_find);
if(typeof(elem)=="string" && elem.indexOf(string_to_find)!==-1) {
return true;
}
if(typeof elem === "object") { // is an object (plain object or array),
// so contains children
return iterate(elem , string_to_find); // call recursively
}
}
}