将字段添加到JSON文件

时间:2014-08-29 22:24:54

标签: php json

我有一个非常简单的JSON文件" json.txt" :

{
"status": true,

"data": 
{
    "clics": 
    [
        {
            "id": "1",
            "title": "Title 1",
            "comment": "Blablabla 1",
            "url": "http://photostodisplay/1.jpg"
        },
        {
            "id": "2",
            "Title": "Title 2",
            "comment": "Blablabla 2",
            "url": "http://photostodisplay/2.jpg"
        }
    ]
   }
}

我想添加数据并得到以下结果:

{
"status": true,

"data": 
{
    "clics": 
    [
        {
            "id": "1",
            "title": "Title 1",
            "comment": "Blablabla 1",
            "url": "http://photostodisplay/1.jpg"
        },
        {
            "id": "2",
            "Title": "Title 2",
            "comment": "Blablabla 2",
            "url": "http://photostodisplay/2.jpg"
        },
        {
            "id": "3",
            "Title": "Title 3",
            "comment": "Blablabla 3",
            "url": "http://photostodisplay/3.jpg"
        }
    ]
  }
}

我使用的php代码返回以下错误:

致命错误:无法在第10行的/home/XXXX/www/clic/test.php中使用stdClass类型的对象

这是php代码

<?php
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
$file = 'json.txt';
$data = json_decode(file_get_contents($file));
$newdata = array('id'=>'11', 'title' => 'sfdfsdfqf', 'comment' => 'sfdfwwfwdsdfqf', 'url' => 'sdfqwsfsdqqfqqqsfcq');
$data[] = $newdata;
file_put_contents($file, json_encode($data));
echo OK
?>

编辑 - Cezary的答案几乎提供了我的需要,但却没有。这是我得到的:

{
     

&#34; status&#34;:true,

     

&#34;数据&#34;:{

  "clics": [

     {

        "id": "1",

        "title": "Title 1",

        "comment": "Blablabla 1",

        "url": "http://photostodisplay/1.jpg"

     },

     {

        "id": "2",

        "Title": "Title 2",

        "comment": "Blablabla 2",

        "url": "http://photostodisplay/2.jpg"

     }

  ]
     

},

     

&#34; 0&#34;:{

  "id": "11",

  "title": "sfdfsdfqf",

  "comment": "sfdfwwfwdsdfqf",

  "url": "sdfqwsfsdqqfqqqsfcq"
     

}

     

}

2 个答案:

答案 0 :(得分:4)

问题在于这段代码:

$data = json_decode(file_get_contents($file));

这将返回一个对象,而不是一个关联数组。将该行更改为:

$data = json_decode(file_get_contents($file), true);

json_decode中的第二个参数指定是否需要关联数组,默认为false

修改

您目前正在向根阵列添加内容。要添加到clics数组,您可以将$data[] = $newdata;替换为:

$data['data']['clics'][] = $newdata;

答案 1 :(得分:-1)

不应该

$data["data"]["clics"][]=$newdata;

array_push($data["data"]["clics"],$newdata);