I need to transfer many objects from server as JSON string, is there any library existing for PHP to convert object to JSON and JSON String to Objec, like Gson library for Java.

Đang xem: Php json_encode: serialize php objects to json

*

*

This should do the trick!

// convert object => json$json = json_encode($myObject);// convert json => object$obj = json_decode($json);Here”s an example

$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// (// => world// => baz// )If you want the output as an Array instead of an Object, pass true to json_decode

print_r(json_decode($json, true));// Array// (// => world// => baz// ) More about json_encode()

See also: json_decode()

*

Xem thêm: Hướng Dẫn Sửa Lỗi Circular Reference Warning, Cách Sửa Lỗi Circular Reference Trong Excel

for more extendability for large scale apps use oop style with encapsulated fields.

Simple way :-

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(new Fruit()); //which outputs:

*

json_decode($json, true); // the second param being true will return associative array. This one is easy.

*

Xem thêm: Tải Game Mobile Legends Bang Bang Bang, ‎Mobile Legends: Bang Bang On The App Store

I made a method to solve this. My approach is:

1 – Create a abstract class that have a method to convert Objects to Array (including private attr) using Regex.2 – Convert the returned array to json.

I use this Abstract class as parent of all my domain classes

Class code:

namespace Projectcore;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; }}

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *