Json encocde数组的混合与仅在数组中转换的对象

时间:2016-04-06 09:20:48

标签: javascript php arrays json

我的php函数返回一个我使用

转换为json的数组

inline-block

然后将其传递给其他函数并进行解码 casinomongodb:PRIMARY> db.isMaster(); { "setName" : "casinomongodb", "setVersion" : 31173, "ismaster" : true, "secondary" : false, "hosts" : [ "10.1.243.66:27017", "10.1.243.62:27017", "10.1.243.61:27017" ], "primary" : "10.1.243.62:27017", "me" : "10.1.243.62:27017", "electionId" : ObjectId("56c5657c8994dff92e8996fa"), "maxBsonObjectSize" : 16777216, "maxMessageSizeBytes" : 48000000, "maxWriteBatchSize" : 1000, "localTime" : ISODate("2016-04-06T09:19:03.077Z"), "maxWireVersion" : 3, "minWireVersion" : 0, "ok" : 1 }

它返回一个数组,包括数组格式的所有索引。 即使在请求数组中,$ questionData在某个索引上也有对象,那些在jason编码和解码执行后应该在对象中。

我想获得具有arrya和object数据混合的相同数组。

下面是请求数组

$req = json_encode($questionData);

响应数组

$res = json_decode($req);

1 个答案:

答案 0 :(得分:0)

所以在我意识到你真正想做的事情后,我只使用serializeunserialize作为JSON函数的替代品,如下面的工作示例:

class testobj {

    public function __get($name) {
        if(isset($this->{$name}))
            return $this->{$name};
        return false;
    }

    public function __set($name,$val) {
        $this->{$name} = $val;
    }
}

$test = new testobj();
$test->testvar = "testval";

echo print_r($test,true);

/* Output:
testobj Object
(
    [testvar] => testval
)
*/

$test = serialize($test);
echo $test;

/* Output:
O:7:"testobj":1:{s:7:"testvar";s:7:"testval";}testobj Object
*/

$test = unserialize($test);

echo print_r($test,true);

/* Output:
testobj Object
(
    [testvar] => testval
)
*/

echo $test->testvar; // outputs "testval"

我认为serialize()unserialize()并不像JSON de- / encoding那样快(我从来没有对此进行过测试/基准测试),但它本身存储了对象名称。我不知道它是否适用于具有方法的类/对象,但对于上面的数据,它将起作用。也有多维结构。