在 PHP 中将 Object 转换为 JSON 和 JSON 转换为 Object(像 Gson for Java 这样的库)

2022-08-30 09:10:45

我正在用PHP开发一个Web应用程序,

我需要将许多对象作为JSON字符串从服务器传输,是否有任何PHP库可以将对象转换为JSON和JSON字符串转换为Objec,例如Java的Gson库。


答案 1

这应该可以解决问题!

// 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
// )

如果希望输出为数组而不是对象,请传递给truejson_decode

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

更多关于json_encode()

另请参见:json_decode()


答案 2

为了提高大规模应用的可扩展性,请使用带有封装字段的 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)
            ];
        }
    }

回声json_encode(新水果());其中输出:

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

真正的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/ - 仅序列化

推荐