我有以下JSON字符串作爲日誌行的一部分。正則表達式過濾掉json字符串中的部分鍵值
cells : {"Lac":"7824","CntryISO":"us","NetTyp":"GSM","NetOp":"310260","Cid":"11983"}
我想篩選出以下格式:{"Lac":"7824","Cid":"11983"}
。
如何使用正則表達式來做到這一點?在Javascript或Python? 鍵是常量字符串(Lac,CntryISO,...),但值字符串是變化的。
我有以下JSON字符串作爲日誌行的一部分。正則表達式過濾掉json字符串中的部分鍵值
cells : {"Lac":"7824","CntryISO":"us","NetTyp":"GSM","NetOp":"310260","Cid":"11983"}
我想篩選出以下格式:{"Lac":"7824","Cid":"11983"}
。
如何使用正則表達式來做到這一點?在Javascript或Python? 鍵是常量字符串(Lac,CntryISO,...),但值字符串是變化的。
擴大和解釋@alex答案:
JSON是巢狀多維結構。簡單地過濾「Javascript對象的字符串形式」(又名JSON)將在非常簡單的情況下工作,但當結構不再平坦或開始與轉義字段等變得複雜時,將迅速失敗。
那時你需要適當的解析邏輯。這是很好的的Javascript自身提供,引用@alexes代碼:
var myJson = {"Lac":"7824","CntryISO":"us","NetTyp":"GSM","NetOp":"310260","Cid":"11983"};
delete myJson.Lac;
delete myJson.cId;
或者,如果你想使用Python,該json
模塊會工作得很好: http://docs.python.org/library/json.html
祝你好運! :)
爲什麼要在使用正則表達式時使用JSON解析器/序列化程序?如果您關心速度,請嘗試Python中的cjson,它比Python標準庫中的'json'模塊更快。
我可以...但需要爲每個日誌行創建json對象的開銷...我只是想知道這應該不難與reg exp ...也許我錯了。 – haijin 2010-11-13 21:39:01
OMG! http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – jordanbtucker 2010-11-12 02:18:40
除了使用regexen來解析JSON比使用它們解析更加遲鈍XML,因爲JSON更容易正確工作。 – aaronasterling 2010-11-12 02:46:01
對於那些認爲這是遲鈍的問題...這是從我從服務器獲得的日誌文本...我知道我可以輕鬆地重新構建JSON對象並操縱它...但是,它太多了開銷爲每個日誌行創建一個json爲此....我相信reg exp應該可以處理它.. – haijin 2010-11-13 21:34:14