как преобразовать объекты массива json в массив php



У меня есть строка json i, в которой есть объект в одном из них есть один массив json и другой объект я хочу сначала массив json, а затем преобразовать в массив php и другой объект json в переменную php.Пожалуйста, скажите мне, как это сделать. У меня есть stdclass, но я не могу получить точные данные.



Строка Json



{
"data": [
{
"ques_name": "no",
"ques_id": "1"
}, {
"ques_name": "yes",
"ques_id": "2"
}, {
"ques_name": "no",
"ques_id": "3"
}, {
"ques_name": "yes",
"ques_id": "4"
}, {
"ques_name": "no",
"ques_id": "5"
}, {
"ques_name": "yes",
"ques_id": "6"
}, {
"ques_name": "no",
"ques_id": "7"
}
],
"UserId": 163
}


Я использовал следующий код, чтобы получить массив, но он дает мне массив размером 14, где as size должен быть 7



    $params=$_GET['params'];
$arr=array();
$decode=json_decode($params);
$arr=$decode->data;
print_r($arr);
644   3  

3 ответов:

json_decode($array) преобразует ваш объект json в массив.

Редактировать:
вы можете попробовать json_decode($array, true);. Таким образом, возвращаемые объекты будут преобразованы в ассоциативные массивы.

Edit2 : используя мой код в разделе редактирования (json_decode($array, true);), я получаю следующий массив (который кажется мне нормальным):

Array
(
    [data] => Array
        (
            [0] => Array
                (
                    [ques_name] => no
                    [ques_id] => 1
                )

            [1] => Array
                (
                    [ques_name] => yes
                    [ques_id] => 2
                )

            [2] => Array
                (
                    [ques_name] => no
                    [ques_id] => 3
                )

            [3] => Array
                (
                    [ques_name] => yes
                    [ques_id] => 4
                )

            [4] => Array
                (
                    [ques_name] => no
                    [ques_id] => 5
                )

            [5] => Array
                (
                    [ques_name] => yes
                    [ques_id] => 6
                )

            [6] => Array
                (
                    [ques_name] => no
                    [ques_id] => 7
                )

        )

    [UserId] => 163
)

Edit3 : для того, что вы спрашиваете о том, как получить id / name часть массива, вот небольшой пример кода:

$jsonData= ''; // put here your json object
$arrayData = json_decode($jsonData, true);
if (isset($arrayData['data']))
{
foreach ($arrayData['data'] as $data)
{
echo 'id='.$data['ques_id'].', name='.$data['ques_name'].'<br>'
}
}

Есть много способов достичь того же, некоторые из них приведены ниже

$array =  (array) json_decode($xml_variable);

Из http://www.php.net/manual/en/language.types.array.php

$array = json_decode(json_encode($xml_varible), true);

Или

function object_to_array(json_decode($xml_varible))
{
    if (is_array($data) || is_object($data))
    {
        $result = array();
        foreach ($data as $key => $value)
        {
            $result[$key] = object_to_array($value);
        }
        return $result;
    }
    return $data;
}

Или

function object_to_array(json_decode($xml_varible)) 
{
if ((! is_array($data)) and (! is_object($data))) return 'xxx'; //$data;

$result = array();

$data = (array) $data;
foreach ($data as $key => $value) {
    if (is_object($value)) $value = (array) $value;
    if (is_array($value)) 
    $result[$key] = object_to_array($value);
    else
        $result[$key] = $value;
}

return $result;
}

Вы также можете попробовать:

array = get_object_vars(jsonData)

Согласно http://php.net/manual/en/function.get-object-vars.php :

Возвращает ассоциативный массив определенных объектов, доступных нестатическим свойствам для указанного объекта в области видимости. Если свойству не было присвоено значение, оно будет возвращено со значением NULL.

Comments

    Ничего не найдено.