У меня есть таблица в моей базе данных сервера со следующими столбцами:Создание JSON с конкретным форматом, используя PHP
|---category--|---name---|---description---|
Таким образом, позволяет сказать, например, что мы имеем следующие данные внутри таблицы:
|---CategoryA--|---name1---|---description1---|
|---categoryB--|---name2---|---description2---|
|---categoryA--|---name3---|---description3---|
|---categoryA--|---name4---|---description4---|
Я хотел бы создать .php-файл, и когда я позвоню ему из своего Android-приложения, я бы хотел получить JSON в качестве ответа. Файл JSON хотел бы иметь следующий формат:
{
"CategoryA":[
{"name":"name1","description":"description1"},
{"name":"name3","description":"description3"},
{"name":"name4","description":"description4"}
],
"KatigotiaB":[
{"name":"name2","description":"description2"}
]
}
Я создал .php файл, который возвращает мне данные в формате JSON, но не в определенном формате, я хочу. Вот мой .php файл:
<?php
header('content-type: text/html; charset=utf-8');
try {
$pdo = new PDO('mysql:host=****;dbname=****', '****', '****', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
$stmt = $pdo->prepare("SELECT * FROM `db`.`table`;");
$stmt->execute();
$results = array();
while ($obj = $stmt->fetch(PDO::FETCH_ASSOC)) {
array_push($results, $obj);
}
function replace_unicode_escape_sequence($match) {
return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UTF-16BE');
}
$str = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', json_encode($results));
echo $str;
?>
и результат:
[{"category":"CategoryA","name":"name1","description":"description1"},
{"category":"CategoryB","name":"name2","description":"description2"},
{"category":"CategoryA","name":"name3","description":"description3"},
{"category":"CategoryA","name":"name4","description":"description4"}]
Как я в Android разработчик и мой PHP знание ограничено, как я мог бы воссоздать свой файл .php в порядке получить правильный формат JSON?
UPDATE: , который работает
foreach ($nameDescriptionPairs as $nameDescriptionPair) {
$result[$row['category']][] = array(
'name' => $nameDescriptionPair['name'],
'description' => $nameDescriptionPair['description']
);
}
Спасибо mate, это действительно хороший кусок кода, но, к сожалению, я получаю ошибку сервера 500. –
В какой строке? будьте уверены, 'QUERY;' не имеет отступа. – Axalix
Синтаксическая ошибка FATAL ERROR, неожиданная '[' на строке номер 13 [PDO :: MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"] –