2012-09-24 54 views
0

我想將json轉換爲變量而不使用json_decode將Json轉換爲數組變量(對象)

例如:

$json = '{ 
    "username": "username", 
    "password": "pass", 
    "movies": [ 
     { 
      "a": "xx", 
      "b": "xx", 
      "c": "xx", 
      "d": 1, 
      "e": 2 
     } 
    ] 
}'; 

我試圖將其轉換成數組:

$post = array(
      'username' => 'username', 
      'passsword' => 'pass', 
      'movies' => (object) array(
      'a' => 'xx', 
      'b' => 'xx', 
      "c" => 1, 
      "d" => 2 
      ) 
    ); 
echo json_encode($post); 

正如你可以看到它不匹配movies塊。電影是一個對象。我做錯了什麼?

+0

'回聲json_encode($信息[ '電影'],真實);' –

+1

爲什麼你不希望使用'json_decode'正是在這種情況下,一個完美的解決方案。 –

回答

1

'電影' 的對象的數組:

$post = array(
    'username' => 'username', 
    'passsword' => 'pass', 
    'movies' => array(
     (object) array(
      'a' => 'xx', 
      'b' => 'xx', 
      'c' => 1, 
      'd' => 2. 
     ) 
    ) 
); 

但爲什麼你不想使用json_decode()嗎?

+0

因爲我被給了JSON API(上面的示例)。所以我需要添加用戶名,密碼等的值。 –

+1

那麼是什麼? '$ array = json_decode($ json,true); $ array ['newKey'] ='newValue'; $ newJson = json_encode($ array);' –

0

爲什麼地球上你特別是不使用的功能,你應該使用撇開...

movies是對象的數組和對象其實只是關聯數組。因此,它應該更像:

'movies' => Array(
    Array(
     "a" => "xx", 
     "b" => "xx", 
     ... 
    ) 
), 
+0

因爲我被給了JSON API(上面的示例)。所以我需要在json中添加用戶名,密碼等的值? –

+0

你應該怎麼做? –

+0

'json_decode',它修改數組,然後'json_encode'結果。 –

0

應該'movies' => array((object) array('movies' => (object) array(

echo "<pre>"; 
$post = array(
      'username' => 'username', 
      'passsword' => 'pass', 
      'movies' => array((object) array(
      'a' => 'xx', 
      'b' => 'xx', 
      "c" => 1, 
      "d" => 2 
      )) 
    ); 
echo json_encode($post) 
0

從我的理解是,你正在接收一個對象。所以我們把它轉換成json,然後把那個json對象轉換成一個關聯數組。

$var = json_encode($post['movies'],true); 
print_r(json_decode($var,true));