【问题标题】:how to combine/merge two json object in single json object如何在单个 json 对象中组合/合并两个 json 对象
【发布时间】:2016-05-19 15:47:29
【问题描述】:

这是 json 两个对象: [{ "dob":"0000-00-00", “令牌”:“令牌输入”, "facebook":"enterfb", "image_url":"url 插入", “验证”:“326098617” }, {
“成功”:“1” }]

我想创建这样的东西:

[{ "dob":"0000-00-00",
    "token":"tokenenter",
    "facebook":"enterfb",
    "image_url":"urlinserted",
    "verification":"326098617",   
    "success":"1"
}]

【问题讨论】:

    标签: java php html


    【解决方案1】:

    我假设你正在使用 php

    你可以这样做:

    $arrayOfArrays = json_decode($json);
    $mergedArray = call_user_func_array('array_merge', $arrayOfArrays);
    

    如果您知道确切的项目数量,您可以执行以下操作:

    $mergedArray = array_merge($arrayOfArrays[0], $arrayOfArrays[1], $arrayOfArrays[2]);
    

    在PHP >= 5.6 你可以这样做:

    $mergedArray = array_merge(...$arrayOfArrays);
    

    回到你的例子:

    json_encode([$mergedArray]);
    

    为了保持键的顺序,您可以使用这个非常基本的功能(必须调整以处理多维数组):

    function simple_array_merge(array $array1, array $array2) {
        $arrays = func_get_args();
        $mergedArray = [];
    
        foreach ($arrays as $array) {
            foreach ($array as $key => $value) {
                $mergedArray[$key] = $value;
            }
        }
    
        require $mergedArray;
    }
    

    现在做:

    $arrayOfArrays = json_decode($json);
    $mergedArray = call_user_func_array('simple_array_merge', $arrayOfArrays);
    

    【讨论】:

    • [{ "dob":"0000-00-00", "token":"tokenenter", "facebook":"enterfb", "image_url":"urlinserted", "verification": "326098617"} , { "success":"1"} }] 现在我想在验证后移动成功对象
    • @MuhammadDaniyal 您必须手动执行此操作。您可以通过按键升序/降序对数组进行排序,也可以手动进行。您还可以编写自己的 array_merge 函数,将项目推送到数组并保持元素的顺序。
    【解决方案2】:

    所以,这里你有两个对象在一个数组中,简单的解决方案是将第二个对象合并到第一个对象中,简单的做作。 像下面的代码:

    a=[{ 
     "dob":"0000-00-00",
     "token":"tokenenter", 
     "facebook":"enterfb", 
     "image_url":"urlinserted",
     "verification":"326098617" },
     {
         "success":"1"
     }
     ];
    a[0].success=a[1].success
    

    这样,您将获得一个组合两个对象的对象。如果你想删除第二个,你可以使用:

    delete a[1];
    

    或者

    a[1]=undefined
    

    祝你好运。

    【讨论】:

    • @Gothdo 是的,当然,我有点忙,我在代码中添加了一些解释。我希望现在很清楚。感谢您的评论。
    • @gotdo 感谢您的建议。 $o[] = $e + array('成功' => "1" );这项工作对我来说谢谢你的时间:D
    猜你喜欢
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 2019-12-17
    相关资源
    最近更新 更多