2013-07-16 67 views
1

我試圖建立我的第一個公共API,這很好,但我碰到一些麻煩轉換不同的數據格式,將被髮布。基本上,API應該同時接受JSON和XML,現在我試圖將它們轉換爲常見的PHP數組結構。從JSON和XML轉換時實現相同的數組結構

對於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"}]} 

任何人都可以弄清楚我將如何在兩個示例中實現相同的數組結構?

回答

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 
     ) 

) 
+0

由於拉傑夫蘭詹。這工作! 我能通過改變最初的XML結構來實現這個結果嗎? – Stromgren

+0

@Stromgren是的,這將工作。 –

相關問題