1

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 Answer 1

1

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
        )

)
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks Rajeev Ranjan. This works! Will i be able to achieve this result by changing the initial XML structure instead?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.