我从API调用中获取了一些数据,并尝试构建一个JSON以将其发送回另一个API。
最终的JSON必须如下所示:
{
"jobs": {
"MP_OFFER_ID_1": {
"job_id": "jobboard_reference_1",
"url": "url_1",
"status": 0
},
"MP_OFFER_ID_2": {
"job_id": "job_id_2",
"url": "url_2",
"status": 1
},
}
}
因此,在jobs
键下,它不是元素数组,而是具有唯一键的元素列表。
这就是我遇到的麻烦。
我要解析的数据是一个如下结构的数组:
Array(
[0] => Array(
[link] => some-url
[id] => 18790674
[ref] => 0015909-18790674
)
// ...
);
link
必须放在JSON的url
键中。
id
是JSON密钥,在示例中MP_OFFER_ID_1
等
ref
必须放在job_id
我实际上最后有这个JSON:
{
"jobs": [
[
{
"18790674": {
"job_id": "0015909-18790674",
"url": "test",
"status": 1
}
},
{
"18790678": {
"job_id": "0015892-18790678",
"url": "test",
"status": 1
}
}
]
]
}
正如您所看到的,jobs
是一个数组(实际上它是一个数组^^的数组)并且这不是我想要的...
答案 0 :(得分:1)
我想出了这一点,但很难从有限的信息中理解你想要的是什么:
<?php
$input = [
[
'id' => 18790674,
'link' => 'some-url',
'ref' => '0015909-18790674',
],
[
'id' => 18790678,
'link' => 'another-url',
'ref' => '0015909-18790678',
],
];
$output = new stdClass();
foreach ($input as $arr) {
$obj = new stdClass();
$key = $arr['id'];
$obj->job_id = $arr['id'];
$obj->url = $arr['link'];
$obj->status = '1'; // ?
$output->{$key} = $obj;
}
echo json_encode($output, JSON_PRETTY_PRINT);
输出:
{
"18790674": {
"job_id": 18790674,
"url": "some-url",
"status": "1"
},
"18790678": {
"job_id": 18790678,
"url": "another-url",
"status": "1"
}
}