如何使用php将新节点写入服务器上的json文件

时间:2014-01-26 15:58:40

标签: php json

如何处理jquery发送的数组,用PHP放入现有的嵌套json文件? 我可以使用jquery发送数据,但我可以管理的是php覆盖文件或将数据添加到文档的末尾,我需要将新数据放在json文件的嵌套结构中。

我的脚本看起来像这样;

<?php
$postdata = $_POST['data'];
$postdata = json_encode($postdata);
file_put_contents('json/user.json', $postdata);
?>

我的json有一个嵌套结构,如;

"{\"users\":
    [{\"user\":
         [{\"id\":\"martijn\",
           \"pw\":\"password\",
           \"name\":\"user3\",
           \"icons\":
              [{\"bookmarks\":\"bookmark3\",
                \"notes\":\"note3\"
           }]
         }]
    }]
}"

我想向用户添加另一个用户,我将如何使用php?

我的jQuery请求和要发送的数据;

var newUser = [{
                    user: [{
                        id: username,
                        pw: password,
                        name: "user3",
                        icons: [{
                            bookmarks: "bookmark3",
                            notes: "note3"
                        }]
                    }]
                }];


                var userSetup = JSON.stringify(newUser);

                $.ajax({
                    url: themeUrl + '/script.php',
                    type: 'POST',
                    data: { 
                        data: newUser,
                    },
                    dataType: 'json'
                });

1 个答案:

答案 0 :(得分:0)

这有点棘手,

你需要使用这些步骤才能做到这一点..

  • 首先使用user.json
  • 检查文件file_exists()是否存在
  • 如果是的话......只需使用file_get_contents()
  • 阅读其中的所有内容即可
  • 现在json_decode()并将其存储在数组中。
  • 现在抓住$_POST['data']并将其添加到之前的解码数组中。
  • 现在你必须将最后的json_encode()改为字符串。
  • 最后使用user.json写入file_put_contents()文件。 [不需要FILE_APPEND旗帜]

编码部分......

<?php 

if(file_exists('json/user.json'))
{
$cont = file_get_contents('json/user.json'); 
$usr_array = json_decode($cont,1);
    foreach($_POST['data'] as $val)
    {
        $usr_array[]=$val;
    }
$newData = json_encode($usr_array); 
file_put_contents('json/user.json', $newData ); 
}
else
{
    die('File does not exist !');
}