我必须与一些期望JSON的API通信。 到现在为止我很好,因为我只需要简单的json,所以我只需创建这样的数组:
$data = array (
"firstName" => "TEXT1",
"lastName" => "TEXT2",
"license" => "TEXT3",
"password" => "TEXT4",
"username" => "TEXT5"
);
之后只是简单的
$data_string = json_encode($data);
所以最终的JSON看起来像是:
{
"firstName": "TEXT1",
"lastName": "TEXT2",
"license": "TEXT3",
"password": "TEXT4",
"username": "TEXT5"
}
但是现在我需要改变一下,我很困惑,我的新JSON应该是这样的:
{
"contact": {
"city": "New Yourk",
"email": "my@mail.com",
"phone": "777888999",
"postCode": "07101",
"street": "Street N. 12"
},
"enabled": true,
"firstName": "Robert",
"lastName": "Exer",
"username": "login@login.com",
"license": "text",
"password": "text"
}
正如您所看到的,基本上只添加了contact
部分。我在考虑如何做到这一点,但只是认为我发现有点像将数组插入到现有的$ data数组然后json_encode,但这不会在开始时给我contract:
。
当然有可能做一些其他的方式,比如创建一个json然后另一个并且很难连接字符串等等。但我相信必须有更好的方法来做这样的事情。
我建议任何建议:)
答案 0 :(得分:4)
只需将数组放入contact
:
$data = array(
'contact' => array(
'city' => 'New York',
'email' => 'my@mail.com',
//...
),
'enabled' => true,
'firstName' => 'Robert',
'lastName' => 'Exer',
//...
);
$data_string = json_encode($data);
答案 1 :(得分:4)
数组可以包含另一个数组,该数组将被编码为前一个对象中的单独对象:
$data = array (
"contact" => array(
"city" => "New Yourk",
"email" => "my@mail.com",
"phone" => "777888999",
"postCode" => "07101",
"street" => "Street N. 12"
),
"enabled": true,
.. etc
);