2011-06-10 70 views
2

我有以下文件:PHP的JSON解碼txt文件

的data.txt

{name:yekky}{name:mussie}{name:jessecasicas} 

我很新的PHP。你知道我如何使用PHP解碼上面的JSON嗎?

我的PHP代碼

var_dump(json_decode('data.txt', true));// var_dump value null 

foreach ($data->name as $result) { 
     echo $result.'<br />'; 
    } 
+0

我已經提供了一個答案,但你真的只需要查看PHP手冊,看看函數採取什麼參數,並檢查了例子。另外,應該事先知道如果一個函數對一串數據進行操作,你首先必須通過某個文件I/O函數加載它。 – Matthew 2011-06-10 22:39:14

回答

19

json_decode以字符串作爲參數。讀取文件與file_get_contents

$json_data = file_get_contents('data.txt'); 
json_decode($json_data, true); 

您需要調整您的樣本字符串通過添加對象之間圍繞字符串,逗號報價和配售對象包含數組(或對象)內是有效的JSON。

[{"name":"yekky"}, {"name":"mussie"}, {"name":"jessecasicas"}] 
+0

將以給定的文件失敗 – KingCrunch 2011-06-12 00:17:41

1

你的JSON數據是無效的。您在那裏有多個對象(並且缺少引號),因此在您輸入json_decode之前,需要一些方法將它們分開。

1
$data = json_decode(file_get_contents('data.txt'), true); 

但是你的JSON需要正確格式化:

[ {"name":"yekky"}, ... ] 
3

正如我在your other question提到你是不是產生有效的JSON。在那裏看到我的回答,以及如何創建它。這將導致類似

[{"name":"yekky"},{"name":"mussie"},{"name":"jessecasicas"}] 

(我不知道,你的報價都消失了,但json_encode()通常會產生有效的JSON)

這是很容易可讀

$data = json_decode(file_get_contents('data.txt'), true); 
0

你必須閱讀文件!

$json = file_get_contents('data.txt'); 
var_dump(json_decode($json, true)); 
1

根據JSONLint,這不是一個有效的JSON文件。如果是這樣,你必須先讀它:

$jsonBytes = file_get_contents('data.json'); 
$data = json_decode($jsonBytes, true); 
/* Do something with data. 
If you set the second argument of json_decode (as above), it's an array, 
otherwise an object. 
*/