最简单的方法是用JavaScript读/写一个小的JSON文件?

时间:2015-10-12 02:32:29

标签: javascript php jquery

我的视频游戏中有一个用于街机风格排行榜的JavaScript对象数组。所以,JSON看起来像这样:

[
    {"initials" : "JOE", "score": 20250},
    {"initials" : "ACE", "score": 10010},
    {"initials" : "YUP", "score": 5500}
]

在游戏结束时,我想将当前的排行榜数组从服务器上的文件读入JS,如果玩家成为排行榜,则修改数组并将其写回到排行榜文件中。

从概念上看很简单,但我花了大部分时间阅读PHP,AJAX,jQuery,而且由于我是这些技术的新手,我的脑袋旋转了一下,主要是因为我找到的例子是比我的情况要复杂得多。

如果JSON数组是文件中唯一的东西,那么从文件读取JSON数组到JavaScript然后再将其重新写回来的最简单方法是什么?我的托管服务运行PHP 5.5。

编辑: 在收集了一些反馈并阅读了更多内容之后,下面是我提出的内容,这有效。

// read leader board
function readLeaderboard() {
    var scores = [];
    // load json without caching
    var nonCacheableURL = 'js/leaderboard.json?nocache=' + (new   
        Date()).getTime();
    $.getJSON(nonCacheableURL, function(json) {
        for (var i=0; i<json.length; i++) {
            scores[i] = json[i];
        }
    });
    return scores;
}

// save leader board
function saveLeaderboard(leaderboard) {
    $.post('js/postLeaderboard.php', {json : JSON.stringify(leaderboard)},
        function (data, textStatus, jqXHR){}
    );
}

调用postLeaderboard.php:

<?php
file_put_contents("leaderboard.json",  $_POST['json']);
?>

2 个答案:

答案 0 :(得分:0)

在php中你可以按照以下几行:

读取JSON并从中获取一个Assoc Array:

$scores = (array)json_decode(file_get_contents('scores.json'));

将数组写入JSON文件:

file_put_contents('scores.json', json_encode($scores));

我希望这会有所帮助。

答案 1 :(得分:0)

我在PHP中最简单的方法就是做这样的事情:

// Get the Data
$data = file_get_contents("data.json");
// Decode the json in it and store it,
$decoded = json_decode($data);
// Manipulate the $decoded here...


// JSON encode the object - $decoded and store it in a variable
$modified = json_encode($decode);

// put it back in the file
/* if you want to append the data, uncomment this-
$prev = true;
*/
if(isset($prev) && $prev = true)
{
    file_put_contents("data.json", $prev . $modified);
}
else{
    file_put_contents("data.json", $modified);
}