0

我正在尝试将 json 转换为变量而不使用json_decode.

例如:

$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

4 回答 4

1

'movies' 是一个对象数组:

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

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

于 2012-09-24T23:29:26.187 回答
0

据我了解,您正在接收一个对象。因此,让我们将其转换为 json,然后将该 json 对象转换为关联数组。

$var = json_encode($post['movies'],true);
print_r(json_decode($var,true));
于 2012-09-24T23:37:00.860 回答
0

撇开你到底为什么不使用你应该使用的功能不谈......

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

'movies' => Array(
    Array(
        "a" => "xx",
        "b" => "xx",
       ...
    )
),
于 2012-09-24T23:28:47.380 回答
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)
于 2012-09-24T23:28:47.817 回答