【问题标题】:Saving data across multiple lines JSON跨多行 JSON 保存数据
【发布时间】:2018-06-14 11:56:29
【问题描述】:

目前我有 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 文件保留换行符?

谢谢!

【问题讨论】:

  • 你能粘贴更新你的 JSON 文件的代码吗?
  • @RakeshSojitra 抱歉,刚刚更新!
  • @Lovepreet Singh:是的
  • @RakeshSojitra 当我在他的答案的 cmets 中问他时,我也会问你:有没有办法只根据每个对象而不是每个参数和值来分解它们?
  • 是的,你必须先制作 JSON 字符串。您可以使用 \n 在文件中添加新行

标签: php json line-breaks


【解决方案1】:

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

$json_string = json_encode($data, JSON_PRETTY_PRINT);

阅读更多关于json_encode

【讨论】:

  • 有没有办法只根据每个对象而不是每个参数和值来分解它们?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-10
  • 2017-02-18
  • 2017-08-21
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多