我正在处理一个Shopware项目,需要设置一个包含所有已处理订单的JSON。
这个JSON被存储在一个目录中,我已经找到并将其传递给一个变量$fil。
$filer = $order1->getOrderNumber() . '_' . $country2->getIso() . '.json'; $fil = __DIR__ . '/' . $filer; $file_contents = file_get_contents($fil);
获取到的JSON存储在变量$fil中,然后传递给变量$jsonData。
$jsonData = $fil;
我试图通过将JSON解码为关联数组来替换下面的键的值。
$data = json_decode($jsonData, true);
要替换的键如下(尝试替换ID)
$data['entity']['payments'][0]['state']['id'] = $logMessageId;
然后,我尝试将其保存回变量modifiedJsonData并替换回目录。
$modifiedJsonData = json_encode($data, JSON_PRETTY_PRINT); file_put_contents($fil, $modifiedJsonData);
它似乎部分工作,但不完全,而不仅仅是替换(ID)。
如下所示:$data['entity']['payments'][0]['state']['id']
它替换了整个JSON的内容,而不仅仅是上述内容,JSON内容应该比下面的内容更多:
{
"entity": {
"payments": [
{
"state": {
"id": #####
}
}
]
}
}
请帮忙,我可能做错了什么
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
我还能通过以下方式绕过它:
$data = json_decode($jsonData, true, 512, JSON_BIGINT_AS_STRING); $data['entity']['payments'][0]['state']['id'] = $logMessageId; $modifiedJsonData = json_encode($data, JSON_PRETTY_PRINT); $existingData = json_decode(file_get_contents($fil), true); $existingData['entity']['payments'][0]['state']['id'] = $data['entity']['payments'][0]['state']['id']; $updatedJsonData = json_encode($existingData, JSON_PRETTY_PRINT); file_put_contents($fil, $updatedJsonData);