使用php将JSON对象插入.json文件

时间:2016-03-22 04:21:41

标签: php json

我将以下JSON文件存储在服务器中。我使用PHP脚本将另一个对象添加到此JSON文件。

testjson1.json:

{
"feed": 
[
{
"id": "1",
"name": "Ram",
"status": "Very good restaurant!! water tastes soo good :)"
}
]
}

我用来添加对象的php如下:

<?php
$data=array("2","new","not so good");
$inp = file_get_contents('testjson1.json');
$tempArray = json_decode($inp);
array_push($tempArray, $data);
$jsonData = json_encode($tempArray);
file_put_contents('testjson1.json', $jsonData);
?>

但是php文件显示错误,上面写着:

  

警告:array_push()要求参数1为数组,对象在第5行的/home/u160481344/public_html/jsonfinder.php中给出

并且json文件折叠成一行。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

根据documentation,如果您不想要来自json_decode

的对象
   json_decode($tempArray, true);

添加第二个布尔参数。试着让我知道。

答案 1 :(得分:1)

添加第二个布尔参数TRUE,返回的对象将被转换为关联数组。

只需替换此行

$tempArray = json_decode($inp);

有了这个

$tempArray = json_decode($inp,true);

答案 2 :(得分:1)

PHP函数json_decode()解码一个JSON字符串,它接受一个JSON编码的字符串并将其转换为PHP变量。

下面编写的脚本返回对象数据类型中的PHP变量。

$inp = file_get_contents('testjson1.json');
$tempArray = json_decode($inp);

但PHP函数array_push()仅接受数组作为输入参数。您可以将第二个参数(可选)布尔类型传递给j​​son_decode()函数,例如 json_decode($json_string, TRUE) ,它将在关联数组中返回解码PHP变量。 你必须像这样更新你的代码 -

$inp = file_get_contents('testjson1.json');
$tempArray = json_decode($inp, TRUE);

有关更多参考,请参阅此链接PHP函数json_decode()