【发布时间】:2015-10-25 14:16:19
【问题描述】:
我有两个 JSON 对象,我希望将其合并为一个 JSON 对象。我不希望 JSON 数据被覆盖。我希望数据被合并。
对象 #1:(example1.json)
[{
"title": "xx",
"releaseYear": "2014",
},
{
"title": "yy",
"releaseYear": "2015"
}]
对象 #2:(example2.json)
[{
"title": "yy",
"releaseYear": "2017"
}]
这是我目前正在使用的 PHP 文件:
<?php
$jsonString = file_get_contents('example.json');
$jsonString2 = file_get_contents('example2.json');
$data = json_decode($jsonString, true);
$data2 = json_decode($jsonString2, true);
$op = array_merge_recursive( $data, $data2 );
$resJson = json_encode($op);
file_put_contents('example3.json', $resJson);
收到的输出:(example3.json)
[
{
"title":"xx",
"releaseYear":"2014"
},
{
"title":"yy",
"releaseYear":"2015"
},
{
"title":"yy",
"releaseYear":"2017"
}
]
所需输出:
[{
"title": "xx",
"releaseYear": "2014"
},
{
"title": "yy",
"releaseYear": "2017"
}]
解决方案赞赏。我是 Stackoverflow 的新手,很抱歉我的格式错误(如果有的话)。在此先感谢:)
【问题讨论】:
-
发布年份与给定对象不匹配。这个对吗?如果是这样,这是否意味着您在进行合并时总是必须在匹配标题上采用更高的发布年份值?
-
我一头雾水,你不想覆盖数据,你想合并,但是你要求的结果显然是覆盖,而不仅仅是合并?
-
Overwritten: [{ "title": "yy", "releaseYear": "2017" }] 由于只有一个对象,它覆盖并单独合并第二个数据。这就是我所说的覆盖。