2012-07-31 64 views
0

我試圖用PHP解析一個大的JSON文件,它總是給我錯誤。
當我試圖驗證使用http://jsonlint.com/我遇到了很多錯誤,其中有由「無用」的空間和換行符這樣分開有些話JSON文件:JSON文件包含不需要的空格和換行符

{ 
       "id": "1", 
       "qn 
ame": "detik.co.id.", 
       "source": "undefined" 
}, 

通知詞「的QName」是分爲「qn」和「ame」。這兩者之間有空格和換行符。

正確的應該是這樣的:

{ 
        "id": "1", 
        "qname": "detik.co.id.", 
        "source": "undefined" 
}, 

,因爲有很多類似的錯誤,這將是痛苦的一個手動刪除一個這些字符。有沒有更快的方法來解決這個問題?

+0

WHE你是否得到這樣的廢話JSON? – 2012-07-31 03:18:57

回答

0

根據數據,你可以只擺脫所有的空間和換行符:

tr -d ' \n' <input_json.txt> spaceless_json.txt 

當然,如果您的數據中包含嵌入的空格,將打破,但:

"var one" : 1 
+0

它是一個Linux命令?我目前使用的窗口是 – 2012-07-31 02:54:49

+0

[是的,它是](http://en.wikipedia.org/wiki/Tr_%28Unix%29)。你可以得到Cygwin或其他Windows實現的'tr',或者幾乎在任何文本編輯程序中都可以做同樣的事情。 – blahdiblah 2012-07-31 03:02:28

0

嘗試str_replace()函數,如果在命令行選項不起作用:

$parsed = json_decode(str_replace(array("\r\n", "\r", "\n", "\t"), '', $nasty_string_from_file)); 
相關問題