2009-11-06 105 views
1

我一直想弄清楚如何使用PHP將多個JSON文件重新格式化爲一個單一的文件,但是我很難理解如何使用複雜的正則表達式。假設我哈德以下JSON數據的多個實例:PHP - 正則表達式來重新格式化JSON

{ 
    "felines": { 
     "cats": [ 
      { 
       "age": 7, 
       "name": "frank" 
      }, 
      { 
       "age": 4, 
       "name": "popeye" 
      } 
     ] 
    }, 
    "canines": { 
     "dogs": [ 
      { 
       "age": 2, 
       "name": "lucy" 
      }, 
      { 
       "age": 12, 
       "name": "wilson" 
      } 
     ] 
    } 
} 

比方說我有這個JSON對象的兩個實例在PHP腳本,並希望建立一個單一的JSON對象,結合從兩側的「貓」的對象我有兩個獨立的JSON實例,刪除了「犬」對象。該文件我最終要的是這樣的:

{ 
    "felines": { 
     "cats": [ 
      { 
       "age": 7, 
       "name": "frank" 
      }, 
      { 
       "age": 4, 
       "name": "popeye" 
      } 
     ] 
    }, 
    "felines": { 
     "cats": [ 
      { 
       "age": 6, 
       "name": "sam" 
      }, 
      { 
       "age": 4, 
       "name": "kelly" 
      } 
     ] 
    } 
} 

有誰知道,我也許可以剪接,並結合使用PHP的正則表達式這些JSON對象?

謝謝。

+0

任何人都可能提供一個關於如何使用關聯數組來組合這兩個對象的例子? – minimalpop 2009-11-06 05:01:59

回答

3

爲什麼你不使用json_encode & json_decode做php數組的工作似乎是更容易,然後用正則表達式來做到這一點。

+0

我認爲這將是最好的辦法。 +1 – alex 2009-11-06 04:55:54

1

我懷疑這是一個問題,你應該嘗試用正則表達式來解決。考慮將JSON文件轉換爲關聯數組,進行合併,然後切換回JSON。

1

正則表達式在處理諸如JSON數據,HTML標籤,編程語言等任意嵌套的上下文時通常很糟糕。一些擴展的正則表達式庫修補了這些缺陷。

但是,真的,有沒有理由你需要在JSON本身做到這一點?並與正則表達式?您可能會更容易地將數據反序列化爲真正的PHP數據結構,併合並/操縱那些內容。然後,當你完成後,重新序列化結果。

0

最好的辦法是像RageZ建議的那樣,使用json_encode和json_decode,但是JSON不允許你有相同的鍵名,是嗎?最好的,你可以得到的將是這樣的:

{ 
    "felines": { 
     "cats": [ 
      { 
       "age": 7, 
       "name": "frank" 
      }, 
      { 
       "age": 4, 
       "name": "popeye" 
      }, 
      { 
       "age": 6, 
       "name": "sam" 
      }, 
      { 
       "age": 4, 
       "name": "kelly" 
      } 
     ] 
    } 
}