как преобразовать объекты массива 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);
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