Недостающие персонажи Array - PullRequest
0 голосов
/ 27 марта 2019

Мои данные публикации в файл json не включают начальный и конечный теги []. И если отправлять в существующий файл JSON, чтобы добавить его, он добавляет данные после последнего]. Кроме того, опубликованные данные не включают запятую после последней фигурной скобки в записи.

Публикация в пустом файле json (без тегов []) Добавление существующего файла JSON, содержащего теги []

<?php
if(isset($_POST['submit'])) {
    $file = "sites/default/files/storage.json";
    $json_string = json_encode($_POST, JSON_PRETTY_PRINT);
    file_put_contents($file, $json_string, FILE_APPEND);
    header('Location: thanks'); 
}
?>

Я ожидал, что JSON будет (для пустого файла):

[ { "имя": "Джо", "электронная почта": "joe@bloggs.com", «клетка»: «1234567890», «доб»: «1998-07-13», "исследование": "4" } ]

но это показывает:

{
   "name": "Joe",
   "email": "joe@bloggs.com",
   "cell": "1234567890",
   "dob": "1998-07-13",
   "study": "4"
}

Я ожидал, что JSON будет (для добавленного файла):

[
{
   "name": "Joe",
   "email": "joe@bloggs.com",
   "cell": "1234567890",
   "dob": "1998-07-13",
   "study": "4"
},
{
   "name": "tom",
   "email": "tom@bloggs.com",
   "cell": "1234567891",
   "dob": "1998-07-16",
   "study": "9"
}
]

но это показывает:

[
{
   "name": "Joe",
   "email": "joe@bloggs.com",
   "cell": "1234567890",
   "dob": "1998-07-13",
   "study": "4"
}
]
{
   "name": "tom",
   "email": "tom@bloggs.com",
   "cell": "1234567891",
   "dob": "1998-07-16",
   "study": "9"
}

1 Ответ

0 голосов
/ 02 апреля 2019

Если вы должны были бежать

$json_string = json_encode(array($_POST), JSON_PRETTY_PRINT);

вы получите желаемый результат для элемента. Однако, если у вас уже есть хотя бы элемент в сохраненном json, вы можете сохранить его как JSON следующим образом:

//Reading the file contents into a text
$yourJSON = file_get_contents('myfile.txt');
//Decode your JSON into a variable, assuming it will be an array
$yourArray = json_decode($yourJSON);
//Adding $_POST to the array
$yourArray[]=$_POST;
//Encode
json_encode($_POST, JSON_PRETTY_PRINT);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...