将Json转换为Array变量(对象)

时间:2012-09-24 23:25:39

标签: php arrays 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阻止不匹配。电影是一个对象。我做错了什么?

4 个答案:

答案 0 :(得分:1)

'movies'是一个对象数组:

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

但是你为什么不想使用json_decode()?

答案 1 :(得分:0)

暂且不说为什么你真的没有使用你应该使用的功能......

movies是一个对象数组,对象实际上只是关联数组。所以它应该更像是:

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

答案 2 :(得分: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)

答案 3 :(得分:0)

根据我的理解,你收到的是一个物品。因此,让我们将其转换为json,然后将该json对象转换为关联数组。

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