跨多行JSON保存数据

时间:2018-06-14 11:56:30

标签: php json line-breaks

目前我有PHP和JS将数据保存在JSON中。

以下是代码:

PHP:

<?php

$jsonString = file_get_contents('passwords.json');
$data = json_decode($jsonString, true);
// get the q parameter from URL
$q = $_REQUEST["q"];

$item = $_REQUEST["item"];

// or if you want to change all entries with activity_code "1"
foreach ($data["passwords"] as $key => $password) {
    echo $data["passwords"][$key]['timesToUse'] - 1;
    if ($password['password'] == $q) {

        $data["passwords"][$key]['timesToUse'] = $data["passwords"][$key]['timesToUse'] - 1;
        $data["passwords"][$key]['winningItem'] = $item;
    }
}


$newJsonString = json_encode($data);
file_put_contents('passwords.json', $newJsonString);

?>

JS:

var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "passwords.php?q="+passwords[i].password+"&item="+winningItem.getFullName(), true);
xmlhttp.send();

我遇到的问题是我的JSON文件最初看起来像这样:

{"password":"IS360H","timesToUse":1,"winningItem":""}, 
{"password":"AGRD33","timesToUse":1,"winningItem":""},
{"password":"4BX0FV","timesToUse":1,"winningItem":""}, 
{"password":"99NOTX","timesToUse":1,"winningItem":""}, 
{"password":"X2Z8BO","timesToUse":1,"winningItem":""}, 
{"password":"R9G4Q0","timesToUse":1,"winningItem":""}, 
{"password":"CG9RGT","timesToUse":1,"winningItem":""},

正如你所看到的那样它很好而且整洁,并且每行都有1个密码。但是,一旦文件被修改,它就转向:

{"password":"IS360H","timesToUse":0,"winningItem":"counterUAV"},{"password":"AGRD33","timesToUse":0,"winningItem":"sentryGun"},"password":"4BX0FV","timesToUse":0,"winningItem":"chopperGunner"},"password":"99NOTX","timesToUse":1,"winningItem":""},{"password":"X2Z8BO","timesToUse":1,"winningItem":""}, {"password":"R9G4Q0","timesToUse":1,"winningItem":""},"password":"CG9RGT","timesToUse":1,"winningItem":""},

我需要做些什么才能让我的JSON文件保留换行符?

谢谢!

1 个答案:

答案 0 :(得分:1)

JSON_PRETTY_PRINT函数中有选项json_encode,如果您使用相同的编码json。请尝试以下方法:

$json_string = json_encode($data, JSON_PRETTY_PRINT);

详细了解json_encode