用新的Json数据覆盖Json文件

时间:2014-09-05 09:21:27

标签: php json

所以我将这个json文件(json.json)存储在服务器上,每次调用这个php类时,我想用新的json数据覆盖它(' refresh_token'对象是准确的) :

    $file = file_get_contents('/var/json.json');
    $json = json_decode($file);
    **$REFRESH_TOKEN** = $json->refresh_token;

    $json = file_get_contents("https://xxxxxxxxxxx&refresh_token=**$REFRESH_TOKEN**");
    $obj = json_decode($json, true);
    $AccessToken = $obj->access_token;
    $RefreshToken = $obj->refresh_token;
    **file_put_contents('/var/json.json', json_encode($RefreshToken));**

json文件如下所示:

     {"token_type":"bearer",
    "expires_in":3600,
    "scope":"xxxxxxx",
    "access_token":"xxxx",
    **"refresh_token":"xxxxx",**
    "user_id":"xxxxxx"}

每当我第二次打电话给我时,我都会反复收到错误:Trying to get property of non-object in。我在第一次调用后查看了json文件,发现它没有包含任何内容。这表明file_put_contents('/var/json.json', json_encode($RefreshToken))无效。

任何人都可以告诉我这里我做错了什么吗?

3 个答案:

答案 0 :(得分:1)

确保您有权在该文件上书写。将文件权限更改为777。

答案 1 :(得分:0)

从您的代码中,您尝试做的事情并不明显。我想这是以下内容:

  • 从文件中获取json对象
  • 修改刷新令牌
  • 将json对象写回文件

这将如下工作:

$REFRESHTOKEN = $_GET['REFRESH_TOKEN']; // Calculate refresh token
$json = json_decode(file_get_contents('/var/json.json')); // fetch json object from file
$json->refresh_token = $REFRESHTOKEN // modify refresh token
file_put_contents('/var/json.json', json_encode($json)); // write json object back to file

您正在做的是仅将刷新令牌写入文件,而不是整个对象。这就是为什么在第二次尝试时,对象不存在......

答案 2 :(得分:0)

如果将json_decode的第二个参数设置为true,则会得到关联数组而不是对象。

json_decode的文档:http://php.net//manual/en/function.json-decode.php