Создать вложенный объект JSON в php?
Я не очень много работаю с php, и я немного нечеткий при создании объекта. Мне нужно сделать запрос webservice, отправляющий json, и я думаю, что у меня есть эта часть. Прежде чем я могу представить данные, мне нужно создать вложенный объект. Я предполагал, что это будет тривиально на основе моего опыта работы с языками сценариев на основе ecma, но я считаю, что синтаксис трудно ориентироваться. Объект, который я хочу создать, находится ниже.
{ "client": {
"build": "1.0",
"name": "xxxxxx",
"version": "1.0"
},
"protocolVersion": 4,
"data": {
"distributorId": "xxxx",
"distributorPin": "xxxx",
"locale": "en-US"
}
}
Я видел много примеров плоских объектов, но пока не нашел минимального примера для вложенного объекта. Каким будет синтаксис php для объекта выше? Это необычная вещь в php?
Ответы
Ответ 1
эта структура JSON может быть создана с помощью кода PHP
$json = json_encode(array(
"client" => array(
"build" => "1.0",
"name" => "xxxxxx",
"version" => "1.0"
),
"protocolVersion" => 4,
"data" => array(
"distributorId" => "xxxx",
"distributorPin" => "xxxx",
"locale" => "en-US"
)
));
см. json_encode
Ответ 2
Эй, это быстрый трюк, чтобы вручную преобразовать сложные JSON в PHP-объект.
Возьмите пример JSON, как вы:
{ "client": {
"build": "1.0",
"name": "xxxxxx",
"version": "1.0"
},
"protocolVersion": 4,
"data": {
"distributorId": "xxxx",
"distributorPin": "xxxx",
"locale": "en-US"
}
}
Искать-Заменить {
на array(
Искать-Заменить :
на =>
Искать-Заменить }
на )
Готово.
Ответ 3
Пользовательский массив, чтобы получить правильный формат и затем вызвать echo json_encode (массив)
array( "client" => array(
"build" => "1.0",
"name" => "xxxxxx",
"version" => "1.0"
),
"protocolVersion" => 4,
"data" => array(
"distributorId" => "xxxx",
"distributorPin" => "xxxx",
"locale" => "en-US"
))
Ответ 4
$client = new Client();
$client->information = new Information();
$client->information->build = '1.0';
$client->information->name = 'xxxxxx';
$client->information->version = '1.0';
$client->protocolVersion = 4;
$client->data = new Data();
$client->data->distributorId = "xxxx";
$client->data->distributorPin = "xxxx";
$client->data->locale = "en-US";
Возможно, что-то вроде выше? Клиент будет содержать два объекта. Информация и данные.
Edit
Используя json_encode, вы должны создать этот объект в виде массива в PHP.
$clientObj = array('client'=>
array( array('build'=>'1.0','name'=>'xxxx', 'version'=>'1.0'),
'protocolVersion'=>4,
'data'=>array('distributorId' => 'xxxx', 'distributorPin' => 'xxxx', 'locale' => 'en-US')
);
print json_encode($clientObj);
Ответ 5
Мы также можем построить вложенный массив, а затем выполнить json_encode для построения вложенного JSON.
Например,
{"User":
{"username":"test",
"address":"Posted value fro address field",
"location":{
"id":12345
}
}
}
Выше вывод, который мы можем получить, написав ниже php-код:
<?php
$obj = array(
'username'=>$lv_username,
'address'=>$lv_address,
'location'=>array('id'=>$lv_locationId)
);
$data = '{"User":'. json_encode($obj) .'}';
echo $data;
?>
Надеюсь, что это поможет.
Ответ 6
Используйте встроенную функцию PHP:
json_encode();
это преобразует массив в объект JSON.
Ответ 7
Вы можете использовать json_encode для кодирования php-массива
http://php.net/manual/en/function.json-encode.php
$theArray = array('client'= array('build'=>'1.0',
'name'=>'xxxxx',
'version'=>'1.0'
),
'protocolVersion'=> 4,
'data'=> array('distributorId'=>'xxxx',
'distributorPin'=>'xxxx',
'locale'=>'en-US'
)
);
$theObj = json_encode($theArray);
надеюсь, это поможет..
разместил его, а затем уже видел множество ответов!: |