dongyu4455 2013-07-16 12:11
浏览 70
已采纳

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

I'm trying to build my first public API, which is going pretty fine, but i ran into some trouble converting different data formats that will get POSTed. Basically, the API should accept both JSON and XML, and now i'm trying to convert those into a common PHP array structure.

For JSON my example looks like this:

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

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

This will result in:

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

The XML example is as follows:

$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);

This will result in:

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

Can anyone figure out how i will be able to achieve the same array structure in both examples?

  • 写回答

1条回答 默认 最新

  • duanliang789262 2013-07-16 12:27
    关注

    i think this could help you :-

     $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);
    

    Output :-

    Array
    (
        [0] => Array
            (
                [name] => casper
                [shoesize] => 41
            )
    
        [1] => Array
            (
                [name] => christine
                [shoesize] => 37
            )
    
    )
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000