PHP从分离的对象重新创建JSON对象

时间:2018-01-17 16:30:48

标签: php json

我有以下JSON:

{
    "data": [{
        "item": "apple",
        "date": "17.1."
    }, {
        "item": "banana, kiwi",
        "date": "18.1."
    }]
}

正如您在第二个“item”中看到的那样,有两个元素用逗号分隔。 现在我需要从中创建一个新的JSON。必须拆分包含逗号的“item”并将其放入包含原始“日期”的新对象中。 所以它应该是这样的:

{
    "data": [{
        "item": "apple",
        "date": "17.1."
    }, {
        "item": "banana",
        "date": "18.1."
    }, {
        "item": "kiwi",
        "date": "18.1."
    }]
}

如何在PHP中实现此输出?

1 个答案:

答案 0 :(得分:0)

与Eddie的答案类似,但维护数据结构,您可以转换为object

<?php

$json = '{
    "data": [{
        "item": "apple",
        "date": "17.1."
    }, {
        "item": "banana, kiwi",
        "date": "18.1."
    }]
}';

$obj = json_decode($json);

$fruits = array();
foreach($obj->data as $fruit) {
    $items = explode(",", $fruit->item);
    foreach ($items as $item)
        $fruits[] = (object) ["item" => trim($item), "date" => $fruit->date];
}

$obj->data = $fruits;
print_r(json_encode($obj, JSON_PRETTY_PRINT));

输出

{
    "data": [
        {
            "item": "apple",
            "date": "17.1."
        },
        {
            "item": "banana",
            "date": "18.1."
        },
        {
            "item": "kiwi",
            "date": "18.1."
        }
    ]
}