Часть кода была взята с сайта PHP.net комментарий 78719
-
class JsonWrapper {
-
private $object;
-
private $array;
-
-
-
private function __construct() {
-
}
-
-
public function createObject() {
-
return new StdClass;
-
}
-
-
public function createArray() {
-
}
-
-
public function addObjectToArray(&$array, $object) {
-
}
-
-
public function addProperty(&$object, $key, $value) {
-
$object = new StdClass;
-
}
-
-
public function __toJSON($object) {
-
return $this->json_encode($object);
-
}
-
/**
-
* Character replacements for JSON.
-
* @return JSON with correct characters
-
* @param $a Object[optional]
-
*/
-
-
public function json_encode($a=false) {
-
if ($a === false) return ‘false’;
-
if ($a === true) return ‘true’;
-
{
-
{
-
}
-
-
-
}
-
$isList = true;
-
{
-
{
-
$isList = false;
-
break;
-
}
-
}
-
if ($isList)
-
{
-
foreach ($a as $v) $result[] = $this->json_encode($v);
-
}
-
else
-
{
-
foreach ($a as $k => $v) $result[] = $this->json_encode($k).‘: ‘.$this->json_encode($v);
-
}
-
}
-
-
if (!self::$instance) {
-
self::$instance = new self;
-
}
-
return self::$instance;
-
}
-
}
Название для класса может не совсем удачной, и реализация, но используется мной да и другими мемберами успешно для отдачи json респонса.
Применение:
-
$json = JsonWrapper::getInstance();
-
$object = $json->createObject();
-
$array = $json->createArray();
-
$json->addProperty($object, ‘first’, ‘1th’);
-
$json->addProperty($object, ’second’, ‘2nd’);
-
$json->addObjectToArray($array, $object);
Вывод
[ { "first": "1th", "second": "2nd" } ]
