2012-07-24 132 views
0

我一直在試圖使用由另一SO-用戶建議的方法:https://stackoverflow.com/a/1820837/1324861正則表達式查找字符串,並返回大括號之間一切

但沒有運氣。基本上,我有一個大的JSON對象,我使用JSON.stringify()轉換爲一個字符串,以便執行一個正則表達式模式。我的想法是在{ }之間返回所有內容,前提是在大括號之間的任意位置找到搜索詞「足球」。

我的數據看起來是這樣的:

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

所以,如果我在字符串化JSON對象搜索「足球」我想盡快回到用戶整個信息。我怎樣才能做到這一點?

+4

您字符串化的對象,所以您可以使用正則表達式來搜索它的東西? – Esailija 2012-07-24 15:30:22

+1

你的JSON對象是如此之大以至於它對字符串表示的搜索速度更快? – madfriend 2012-07-24 15:36:54

+0

您的JSON無效,對象會丟失屬性名稱。 – Bergi 2012-07-24 15:45:14

回答

1

不,它沒有意義的字符串化JSON對象就可以了(顫慄)應用正則表達式,但嘿,這是你的CPU ...你可以使用這樣的事情:

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

這應該抓住你要找的東西。但是...... JSON解析與正則表達式...不不不......

+0

我對這種方法並不滿意,但似乎只有我可以想出來,因爲我的JSON是動態的並且深度可變(又名我可能有data.cat1.subcat2.items []和data.cat2 .items []),我想搜索所有貓/子目錄中的所有項目。 - 有更多高性能的想法,我可以做到這一點? – opfeffer 2012-07-24 15:47:34

+2

@opfeffer無論你的JSON是什麼,它總是更容易,更快,更容易出錯搜索其對象表示 – Esailija 2012-07-24 15:48:30

+0

@opfeffer你可以發佈你的JSON樣本嗎?也許只是一些元素,有子元素和子元素? – dda 2012-07-25 02:27:51

0

類似 「{[^}] *(S | S)occer [^}] *}」

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); 
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); 
相關問題