2017-03-16 71 views
0

我有這種格式與數據一個巨大的.txt文件:PHP - 轉換數據,以有效的JSON

{ 
    "template_id": "prefix_1", 
    "settings": { 
     "setting1": "bla", 
     "setting2": "blub" 
    }, 
    "test": 1, 
    "test": 2, 
    "test": 3 
}, 
{ 
    "template_id": "other_prefix_1", 
    "values": { 
     "value1": "bla", 
     "value2": "blub" 
    }, 
    "something": "Hello!" 
}, 
{ 
    "template_id": "prefix_2", 
    "settings": { 
     "setting1": "bla", 
     "setting2": "blub" 
    }, 
    "test": 1, 
    "test": 2, 
    "test": 3 
} 

這看起來像JSON,但它是不是有效的JSON,我要使它有效。結果應該是這樣的:

{ 
    "prefix": [ 
     { 
      "id": "1", 
      "settings": { 
       "setting1": "bla", 
       "setting2": "blub" 
      }, 
      "tests": [ 
       "test": 1, 
       "test": 2, 
       "test": 3 
      ] 
     }, 
     { 
      "id": "2", 
      "settings": { 
       "setting1": "bla", 
       "setting2": "blub" 
      }, 
      "tests": [ 
       "test": 1, 
       "test": 2, 
       "test": 3 
      ] 
     } 
    ], 
    "other_prefix": [ 
     { 
      "id": "1", 
      "values": { 
       "value1": "bla", 
       "value2": "blub" 
      }, 
      "something": "Hello!" 
     } 
    ] 
} 

有人有一個好主意,我怎麼能做到這一點,使用PHP,當我讀txt文件中的數據?線條完全像這樣,所以如有必要,我可以閱讀每一行。

+0

你並不孤單。谷歌:「如何解析php中無效的json」,你可以通過修改別人的代碼來找到捷徑。刪除這個問題是因爲你還沒有嘗試過任何東西。然後,如果你不能嘗試工作(在適當的研究和試驗後)再次將你的問題帶回到SO。 – mickmackusa

回答

0

除非您在TXT文件中的格式是可以被PHP函數解析爲對象的真實格式,否則恐怕您需要從頭開始編寫解析器。它將涉及一個逐行讀取的循環,一些IFs語句和正則表達式。

然後,您可以構建一個包含散列和列表的散列。

然後您可以使用json_encode($ myhash)將此散列轉換爲JSON字符串。