1111/**
1212 * Class JsonParser
1313 * @package Toolkit\DataParser
14+ * @author inhere <in.798@qq.com>
1415 */
15- class JsonParser implements ParserInterface
16+ class JsonParser extends AbstractDataParser
1617{
1718 /**
18- * @var bool
19+ * class constructor.
20+ * @param array $encodeOpts
21+ * @param array $decodeOpts
1922 */
20- protected $ assoc = true ;
21-
22- /**
23- * JsonParser constructor.
24- * @param null $assoc
25- */
26- public function __construct ($ assoc = null )
23+ public function __construct (array $ encodeOpts = [], array $ decodeOpts = [])
2724 {
28- if ($ assoc !== null ) {
29- $ this ->setAssoc ($ assoc );
30- }
31- }
32-
33- /**
34- * @param string $data
35- * @return mixed
36- */
37- public function decode (string $ data )
38- {
39- return \json_decode ($ data , $ this ->assoc );
25+ parent ::__construct ($ encodeOpts , $ decodeOpts ?: [true ]);
4026 }
4127
4228 /**
@@ -45,22 +31,15 @@ public function decode(string $data)
4531 */
4632 public function encode ($ data ): string
4733 {
48- return \json_encode ($ data );
34+ return \json_encode ($ data, ... $ this -> encodeOpts );
4935 }
5036
5137 /**
52- * @return bool
53- */
54- public function isAssoc (): bool
55- {
56- return $ this ->assoc ;
57- }
58-
59- /**
60- * @param bool $assoc
38+ * @param string $data
39+ * @return mixed
6140 */
62- public function setAssoc ( $ assoc )
41+ public function decode ( string $ data )
6342 {
64- $ this ->assoc = ( bool ) $ assoc ;
43+ return \json_decode ( $ data , ... $ this ->decodeOpts ) ;
6544 }
6645}
0 commit comments