我一直在尝试使用其他SO用户建议的方法:https://stackoverflow.com/a/1820837/1324861
但没有运气。基本上,我有一个大的JSON对象,我使用JSON.stringify()
转换为一个字符串,以执行正则表达式模式。我的想法是在{ }
之间返回所有内容,如果在大括号之间的任何地方找到我的搜索词“soccer”。
我的数据可能如下所示:
{
{
User: "Peter",
Hobbies: "Soccer, Football, ...",
more...
},
{
User: "Simon",
Hobbies: "Pingpong, Soccer, Badminton",
more...
}
}
因此,如果我在我的字符串化JSON对象中搜索“足球”,我想收回用户的全部信息。我怎么能这样做?
答案 0 :(得分: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);
答案 1 :(得分:1)
并不是说将字符串化JSON对象应用于它上面的正则表达式(不寒而栗)是没有意义的,但是嘿,这是你的CPU ......你可以使用这样的东西:
\{[^{]+soccer[^}]+}
这应该能够找到你想要的东西。但是......用正则表达式解析JSON ...... Nononono ......
答案 2 :(得分:0)
类似“{[^}] *(S | s)occer [^}] *}”
答案 3 :(得分: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);