0

我一直在尝试使用另一个 SO-User 建议的方法:https ://stackoverflow.com/a/1820837/1324861

但没有运气。基本上,我有一个大的 JSON 对象,我使用它转换成一个字符串JSON.stringify()来执行正则表达式模式。{ }我的想法是如果在花括号之间的任何位置找到我的搜索词“足球”,则返回之间的所有内容。

我的数据可能如下所示:

{
  {
    User: "Peter",
    Hobbies: "Soccer, Football, ...",
    more...
  },
  {
    User: "Simon",
    Hobbies: "Pingpong, Soccer, Badminton",
    more...
  }
}

因此,如果我在字符串化的 JSON 对象中搜索“足球”,我想取回用户的全部信息。我怎样才能做到这一点?

4

4 回答 4

2

您可以从中获得启发(无需将您的 json 转换为字符串):

var myData = [
  {
    User: "Peter",
    Hobbies: "Soccer, Football, ..."
  },
  {
    User: "Simon",
    Hobbies: "Pingpong, Soccer, Badminton"
  }
];
var results = "";
for (var i = 0; i < myData.length; i++) {
    if (myData[i]["Hobbies"].indexOf("Soccer") != -1) {
        results += JSON.stringify(myData [i]) + "\n";
    }                  
}
alert(results);
于 2012-07-24T15:50:28.777 回答
1

并不是说对 JSON 对象进行字符串化以在其上应用正则表达式(不寒而栗)是没有意义的,但是嘿,这是你的 CPU ......你可以使用这样的东西:

\{[^{]+soccer[^}]+}

这应该可以捕获您要查找的内容。但是...用正则表达式解析 JSON... Nononono...

于 2012-07-24T15:41:04.690 回答
0
var json = [
  {
    User: "Peter",
    Hobbies: "Soccer, Football, ..."
  },
  {
    User: "Simon",
    Hobbies: "Pingpong, Badminton"
  }
];


var jsonString = JSON.stringify(json);
var regEx = /(\{.*?Soccer.*?\})/;
var user = jsonString.match(regEx)[1];
document.write(user);
于 2012-07-24T16:02:51.927 回答
0

像“{[^}]*(S|s)occer[^}]*}”

于 2012-07-24T15:42:13.537 回答