从JSON和XML转换时实现相同的数组结构

时间:2013-07-16 12:11:14

标签: php xml arrays json type-conversion

我正在尝试构建我的第一个公共API,这很好,但是我遇到了转换将被POST的不同数据格式的麻烦。基本上,API应该接受JSON和XML,现在我正在尝试将它们转换为通用的PHP数组结构。

对于JSON,我的示例如下所示:

$people = array( array('name' => 'casper',
                       'shoesize' => 41
                 ),
                 array('name' => 'christine',
                       'shoesize' => 37
                 )
);

$data = json_encode($people);
return json_decode($data);

这将导致:

[{"name":"casper","shoesize":"41"},{"name":"charlotte","activated":"1"}]

XML示例如下:

$xml = '<?xml version="1.0"?>'.
       '<people>'.
           '<person>'.
               '<name>casper</name>'.
               '<shoesize>41</shoesize>'.
           '</person>'.
           '<person>'.
               '<name>christine</name>'.
               '<shoesize>37</name>'.
           '</person>'.
       '</people>';

$xml = simplexml_load_string($xml);
$data = json_encode($xml);
return json_decode($data);

这将导致:

{"person":[{"name":"casper","shoesize":"42"},{"name":"christina","shoesize":"12"}]}

有谁可以弄清楚我在两个例子中如何能够实现相同的数组结构?

1 个答案:

答案 0 :(得分:2)

我认为这可以帮到你: -

 $xml = '<?xml version="1.0"?>'.
   '<people>'.
       '<person>'.
           '<name>casper</name>'.
           '<shoesize>41</shoesize>'.
       '</person>'.
       '<person>'.
           '<name>christine</name>'.
           '<shoesize>37</shoesize>'.
       '</person>'.
   '</people>';
 $xml = simplexml_load_string($xml);
 $data = json_encode($xml);
echo '<pre>';
 $dataarray=(json_decode($data,true));
$requiredarray=$dataarray['person'];
print_r($requiredarray);

输出: -

Array
(
    [0] => Array
        (
            [name] => casper
            [shoesize] => 41
        )

    [1] => Array
        (
            [name] => christine
            [shoesize] => 37
        )

)