抱歉,标题太混乱了。我在合并一些JSON文件时遇到了一些问题。我需要将所有产品合并到一个单独文件中的数组中。
我有一个包含相同结构的json文件的目录。我使用glob选择所有文件并解码->追加->将json文件编码成一个大文件。
这是我的代码:
<?php
$files = glob("*.json");
$newDataArray = [];
foreach($files as $file){
$thisData = file_get_contents($file);
$thisDataArray = json_decode($thisData);
$newDataArray[] = $thisDataArray;
}
$newDataJSON = json_encode($newDataArray);
file_put_contents("merged.json",$newDataJSON);
?> 现在,上面的代码看起来很好用,但是我只想提取所有的产品。
我需要达到的目标的快速例子。
File1.json
{
"status": true,
"user": {
"username": "sally",
"avatar": "/images/default-avatar.png",
"products": [
{
"id": "35vR4hr",
"title": "Picture 1",
"image": null,
"quantity": {
"min": 1,
"max": 1
},
"price": 2,
"currency": "CAD",
"stock_warning": 1,
"type": "service",
"stock": 9223372036854776000
},
{
"id": "na1Id4t",
"title": "Picture 2",
"image": null,
"quantity": {
"min": 1,
"max": 1
},
"price": 0.75,
"currency": "CAD",
"stock_warning": 3,
"type": "service",
"stock": 9223372036854776000
}
]
}
}File2.json
{
"status": true,
"user": {
"username": "Jessica",
"avatar": "/images/default-avatar.png",
"products": [
{
"id": "wjiefi94",
"title": "Picture 3",
"image": null,
"quantity": {
"min": 1,
"max": 1
},
"price": 2,
"currency": "CAD",
"stock_warning": 1,
"type": "service",
"stock": 9223372036854776000
},
{
"id": "n34idwi",
"title": "Picture 4",
"image": null,
"quantity": {
"min": 1,
"max": 1
},
"price": 0.75,
"currency": "CAD",
"stock_warning": 3,
"type": "service",
"stock": 9223372036854776000
}
]
}
}我希望将数据合并如下:
merged.json
{
"products": [
{
"id": "wjiefi94",
"title": "Picture 1",
"image": null,
"quantity": {
"min": 1,
"max": 1
},
"price": 2,
"currency": "CAD",
"stock_warning": 1,
"type": "service",
"stock": 9223372036854776000
},
{
"id": "n34idwi",
"title": "Picture 2",
"image": null,
"quantity": {
"min": 1,
"max": 1
},
"price": 0.75,
"currency": "CAD",
"stock_warning": 3,
"type": "service",
"stock": 9223372036854776000
},
{
"id": "n34idwi",
"title": "Picture 3",
"image": null,
"quantity": {
"min": 1,
"max": 1
},
"price": 0.75,
"currency": "CAD",
"stock_warning": 3,
"type": "service",
"stock": 9223372036854776000
},
{
"id": "n34idwi",
"title": "Picture 4",
"image": null,
"quantity": {
"min": 1,
"max": 1
},
"price": 0.75,
"currency": "CAD",
"stock_warning": 3,
"type": "service",
"stock": 9223372036854776000
}
]
}我希望这是合理的。我觉得我已经到了死胡同。任何帮助都是非常感谢的。
发布于 2020-03-02 01:48:48
您是否可以调用像"jq“这样的外部工具?处理json (就像csv一样),特别是处理许多文件,不是您应该手动处理的事情。
顺便说一下,您的示例在产品2和3以及3和4之间没有逗号。
您在第5行的新代码可能应该用数组括号读成这样吗?否则,您将覆盖最后一个文件的内容:
$thisDataArray[] = json_decode($thisData);你为什么要把萨利和杰西卡的产品合并成同一个用户呢?也许您可以将所有的产品对象提取到一个文件中?
(与其说是答案,不如说是代码评审,希望它能有所帮助;)
https://stackoverflow.com/questions/60481320
复制相似问题