Intereting Posts
PHP аналогичный_текст () в java Есть ли какой-либо возможный способ найти название страны, использующей IP-адрес с языком сценариев PHP? AngularJS: получать значения строки запроса без хеша в ссылке Выбранный вариант по умолчанию выбран с помощью jQuery TSP (проблема с продавцом) Решатель Использование GoogleMap Как я могу остановить PHP sleep (), влияющий на весь мой PHP-код? WooCommerce – Скрыть другие способы доставки, когда доступна БЕСПЛАТНАЯ ДОСТАВКА Как экспортировать таблицу html в excel или pdf в php setlocale to fr-FR в PHP и форматирование чисел Показывать ответ отправленной формы на той же странице. (Нет обновления) PHP: Как сгенерировать дерево <ul> <li> в массиве xml2assoc? Как я могу извлечь или распаковать gzip-файл, используя php? Laravel 4 отправляет запрос от контроллера на внешний URL с данными самый простой способ запустить новый процесс / поток в PHP В чем разница между | и || операторы?

Преобразование объекта в JSON и JSON в Object в PHP (библиотека, подобная Gson для Java)

Я разрабатываю веб-приложение на PHP, мне нужно перенести многие объекты с сервера как строку JSON, существует ли какая-либо библиотека, существующая для PHP, для преобразования объекта в JSON и JSON String в Objec, например, в библиотеку Gson для Java …

заранее спасибо…

Solutions Collecting From Web of "Преобразование объекта в JSON и JSON в Object в PHP (библиотека, подобная Gson для Java)"

Это должно сделать трюк!

// convert object => json $json = json_encode($myObject); // convert json => object $obj = json_decode($json); 

Вот пример

 $foo = new StdClass(); $foo->hello = "world"; $foo->bar = "baz"; $json = json_encode($foo); echo $json; //=> {"hello":"world","bar":"baz"} print_r(json_decode($json)); // stdClass Object // ( // [hello] => world // [bar] => baz // ) 

Если вы хотите, чтобы выход как массив, а не объект, передайте true для json_decode

 print_r(json_decode($json, true)); // Array // ( // [hello] => world // [bar] => baz // ) 

Подробнее о json_encode ()

См. Также: json_decode ()

для большей расширяемости для приложений с крупными приложениями используется стиль oop с инкапсулированными полями.

Простой способ :-

  class Fruit implements JsonSerializable { private $type = 'Apple', $lastEaten = null; public function __construct() { $this->lastEaten = new DateTime(); } public function jsonSerialize() { return [ 'category' => $this->type, 'EatenTime' => $this->lastEaten->format(DateTime::ISO8601) ]; } } 

echo json_encode (новый Fruit ()); // который выводит:

 {"category":"Apple","EatenTime":"2013-01-31T11:17:07-0500"} 

Real Gson на PHP: –

  1. http://jmsyst.com/libs/serializer
  2. http://symfony.com/doc/current/components/serializer.html
  3. http://framework.zend.com/manual/current/en/modules/zend.serializer.html
  4. http://fractal.thephpleague.com/ – только для сериализации
 json_decode($json, true); // the second param being true will return associative array. This one is easy. 

Я сделал способ решить эту проблему. Мой подход:

1 – Создайте абстрактный класс, который имеет метод преобразования объектов в массив (включая частный attr) с помощью Regex. 2 – Преобразовать возвращенный массив в json.

Я использую этот абстрактный класс как родительский для всех моих классов домена

Код класса:

 namespace Project\core; abstract class AbstractEntity { public function getAvoidedFields() { return array (); } public function toArray() { $temp = ( array ) $this; $array = array (); foreach ( $temp as $k => $v ) { $k = preg_match ( '/^\x00(?:.*?)\x00(.+)/', $k, $matches ) ? $matches [1] : $k; if (in_array ( $k, $this->getAvoidedFields () )) { $array [$k] = ""; } else { // if it is an object recursive call if (is_object ( $v ) && $v instanceof AbstractEntity) { $array [$k] = $v->toArray(); } // if its an array pass por each item if (is_array ( $v )) { foreach ( $v as $key => $value ) { if (is_object ( $value ) && $value instanceof AbstractEntity) { $arrayReturn [$key] = $value->toArray(); } else { $arrayReturn [$key] = $value; } } $array [$k] = $arrayReturn; } // if it is not a array and a object return it if (! is_object ( $v ) && !is_array ( $v )) { $array [$k] = $v; } } } return $array; } }