2014-01-06 72 views
0

我知道我的JSON是有效的,我想要將所有的KEY從數組中取出並放入一個對象中。但是,似乎我可以訪問一個對象鍵或值,整個數組或一個鍵值對。我還沒有想出如何解析出所有的鍵或數組中的所有值。從一個有效的JSON數組創建一個對象用PHP

這裏是我試過:

的print_r($ json_obj)產量:

Array ([0] => Array ([0] => uploads/featured/doublewm-4097.jpg [1] => featured) [1] => Array ([0] => uploads/featured/moon-5469.jpg [1] => featured)) 

的print_r($ json_obj [0] [1])產量:

featured 

print_r($ json_obj [1] [0])得出:

uploads/featured/moon-5469.jpg 

的print_r($ json_obj [1] [1])yeilds:

featured 

的print_r($ json_obj [0] [0])的產率:

uploads/featured/doublewm-4097.jpg 

PHP代碼:

<?php 
     $resultSet = '[["uploads/featured/doublewm-4097.jpg","featured"], 
      ["uploads/featured/moon-5469.jpg","featured"]]'; 
     $json_obj = json_decode($resultSet); 
     // print_r($json_obj); 
     print_r($json_obj[0][1]); 

?> 

JSON驗證每個JSONLint

[ 
    [ 
     "uploads/featured/doublewm-4097.jpg", 
     "featured" 
    ], 
    [ 
     "uploads/featured/moon-5469.jpg", 
     "featured" 
    ] 
] 

我想結束智慧公頃,在json_obj所有鍵...即對象:

json_obj = array(
     'uploads/featured/moon-5469.jpg', 
     'uploads/featured/doublewm-4097.jpg' 
); 
+0

究竟什麼是你的問題? 'json_decode'正確解碼給定的JSON - 如果你想要一些不同的東西,你可以輕鬆地遍歷數組並創建新的結果。 – kero

+1

您的輸入和預期輸出是什麼?講清楚。 – xdazz

+0

我的輸入被硬編碼到resultSet =「」; 我的預期輸出是來自JSON的文件路徑(鍵)的數組....類似於json_obj = array();示例在結尾 – user3161804

回答

0

也許這是你在找什麼:

JSON編碼服務器端,如:

echo json_encode($html); 

JSON解析客戶端如

var str = JSON.parse(data); 
alert (JSON.stringify(str)) 
+0

不完全是,我傳遞給腳本的json已經通過ajax編碼。爲了這篇文章的目的,我硬編碼了什麼我的JavaScript將傳遞到PHP腳本(在其他地方工作)。既然我知道我的腳本是通過了什麼,我覺得硬編碼值是安全的。我只是試圖訪問每個json對象的鍵並構建一個對象,以便稍後使用它。 – user3161804

1

如果您的輸入始終採用相同的格式,您可以像這樣處理它

$tmp = json_decode($resultSet); 
$json_obj = array(); 
foreach ($tmp as $values) { 
    array_push($json_obj, $values[0]); 
} 

這會給你想要的格式$json_obj用硬編碼$resultSet像你所提供的一個。

0

我設法解決這個問題是這樣的:

更改JSON對象,以這種格式

data = { gallery: gallery_name, 
      files: [ 
        // imagefile,imagefile,imagefile... 
        ] 
     }; 

而且使用下面的PHP

$resultSet = json_decode($_GET['submittedResults'], true); 
    $gallery = $resultSet['gallery']; 
    $files_to_zip = $resultSet['files']; 
相關問題