如何使用PHP编辑特定的JSON密钥值

时间:2018-05-21 08:37:20

标签: php json

我有一个带有JSON对象的JSON文件我试图使用PHP进行读取和编辑,但我想更改特定的Key值,这些值被证明可以解决问题。任何人都有任何他们可能知道可能有帮助的指针或链接吗?

由于

3 个答案:

答案 0 :(得分:2)

你可以试试这个。

首先,解码你的JSON:

$json_object = file_get_contents('some_file_name.json');
$data = json_decode($json_object, true);

然后编辑您想要的内容,例如:

$data['some_key'] = "some_value";

最后将其重写回文件(或更新的文件):

$json_object = json_encode($data);
file_put_contents('some_file_name.json', $json_object);

注意:我认为JSON来自一个文件,但是代替那个文件系统函数,你可以很好地使用任何返回JSON对象的东西。

答案 1 :(得分:0)

如果您有嵌套密钥,则可以执行以下操作:

<强> 1。将JSON解码为PHP数组

$arrayData = json_decode($jsonData, true);

<强> 2。以递归方式指定替换

$replacementData = array('a' => array('b' => 'random2'), 'c' => 'abc');

作为示例,这将使用 random2 替换密钥b内的密钥a的值,并使用值<替换根级别中的密钥c的值em> abc 。

第3。递归执行替换

$newArrayData = array_replace_recursive($arrayData, $replacementData);

<强> 4。编码新的JSON

$newJsonData = json_encode($newArrayData);

测试代码

echo print_r(array_replace_recursive(array('a' => array('b' => 'random'), 'c' => 'def'), array('a' => array('b' => 'random2'), 'c' => 'abc')), true);

应使用 random2 b def 替换a随机中的c abc 并输出:

Array(
    [a] => Array
        (
            [b] => random2
        )

    [c] => abc
)

答案 2 :(得分:-1)

将json转换为数组并递归更新键(depth-nth)

    function json_overwrite($json_original, $json_overwrite)
    {
        $original = json_decode($json_original, true);
        $overwrite = json_decode($json_overwrite, true);

        $original = array_overwrite($original, $overwrite);

        return json_encode($original);
    }

递归迭代并替换$ original

    function array_overwrite(&$original, $overwrite)
    {

        // Not included in function signature so we can return silently if not an array
        if (!is_array($overwrite)) {
            return;
        }
        if (!is_array($original)) {
            $original = $overwrite;
        }
        foreach($overwrite as $key => $value) {
            if (array_key_exists($key, $original) && is_array($value)) {
                array_overwrite($original[$key], $overwrite[$key]);
            } else {
                $original[$key] = $value;
            }
        }


        return $original;
    }

快速测试

    $json1 = '{"hello": 1, "hello2": {"come": "here!", "you": 2} }';


    $json2 = '{"hello": 2, "hello2": {"come": "here!", "you": 3} }';



    var_dump(json_overwrite($json1, $json2));