#json #forms
#json #формы
Вопрос:
Данные моей формы post в файл 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», «dob»: «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. Как выглядит ваш JSON?
2. Пожалуйста, уточните свой вопрос — вывод json показан выше. Вы спрашиваете о чем-то еще? Спасибо.
3. Извините, мне было интересно, что вы получаете по вашему PHP-запросу, прежде чем преобразовать его в JSON. Мне удалось попросить что-то еще, кроме того, что меня интересовало. Извините за это.
4. Нет проблем, Лайош, ну, я не знаю, если честно. Я просто вижу содержимое файла json и все.
5. Вы можете проверить запросы, отправленные на ваш сервер из вашего браузера. В инструментах разработчика вы можете перейти на вкладку сеть и проверить это.
Ответ №1:
Если бы вы должны были запустить
$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);
Комментарии:
1. Я попробую этот Лайос. Спасибо, очень признателен.
2. @user3642264 добро пожаловать. Пожалуйста, дайте мне знать результат.