繁体   English   中英

如何将两个JSON文件合并为一个

[英]How to merge two JSON files into one

我有两个名为users.json和users_custom.json的json文件,它们是使用php从mysql数据库创建的。 users.json文件如下所示:

[{
    "user_id" : "1",
    "Name" : "Mr. A",
    "phone" : "12345"
},
{
    "user_id" : "2",
    "Name" : "Mr. B",
    "phone" : "23456"
}]

和users_custom.json文件看起来像:

[{
    "user_id" : "1",
    "Name" : "Mr. A Modified",
    "email" : "someone@gmail.com"
},
{
    "user_id" : "2",
    "Name" : "Mr. B",
    "address" : "some address"
}]

因此,在users_custom.json文件中,我修改了一些字段,还添加了一些新字段。 现在,我想将users.json文件上的users_custom.json合并到users_final.json文件中。 最后,users_final文件应如下所示:

[{
    "user_id" : "1",
    "Name" : "Mr. A Modified",
    "phone" : "12345"
    "email" : "someone@gmail.com"
},
{
    "user_id" : "2",
    "Name" : "Mr. B",
    "phone" : "23456"
    "address" : "some address"
}]

最后,我将users_final.json文件导入MongoDB数据库。 任何想法或示例代码将不胜感激。 提前致谢。

这应该非常简单,获取两个文件的内容,对它们都进行解码,然后对其进行相应的循环,如果用户ID匹配,则将它们合并,在此过程完成之后,对结果进行编码,然后写入文件。 例:

// $contents_of_users = file_get_contents('users.json');
$contents_of_users = '[{ "user_id" : "1", "Name" : "Mr. A", "phone" : "12345"},{ "user_id" : "2", "Name" : "Mr. B", "phone" : "23456"}]';
// $contents_of_users_custom = file_get_contents('users_custom.json');
$contents_of_users_custom = '[{ "user_id" : "1", "Name" : "Mr. A Modified", "email" : "someone@gmail.com"},{ "user_id" : "2", "Name" : "Mr. B", "address" : "some address"}]';

$data_user = json_decode($contents_of_users, true);
$data_user_custom = json_decode($contents_of_users_custom, true);
$final = $data_user;
foreach($final as $key => &$user) {
    foreach($data_user_custom as $user_custom) {
        if($user['user_id'] == $user_custom['user_id']) {
            $user = array_merge($user, $user_custom);
        }
    }
}

$final = json_encode($final, JSON_PRETTY_PRINT);
echo '<pre>';
print_r($final);

file_put_contents('users_final.json', $final);

样本输出

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM