11
11
/**
12
12
* Class JsonParser
13
13
* @package Toolkit\DataParser
14
+ * @author inhere <[email protected] >
14
15
*/
15
- class JsonParser implements ParserInterface
16
+ class JsonParser extends AbstractDataParser
16
17
{
17
18
/**
18
- * @var bool
19
+ * class constructor.
20
+ * @param array $encodeOpts
21
+ * @param array $decodeOpts
19
22
*/
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 = [])
27
24
{
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 ]);
40
26
}
41
27
42
28
/**
@@ -45,22 +31,15 @@ public function decode(string $data)
45
31
*/
46
32
public function encode ($ data ): string
47
33
{
48
- return \json_encode ($ data );
34
+ return \json_encode ($ data, ... $ this -> encodeOpts );
49
35
}
50
36
51
37
/**
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
61
40
*/
62
- public function setAssoc ( $ assoc )
41
+ public function decode ( string $ data )
63
42
{
64
- $ this ->assoc = ( bool ) $ assoc ;
43
+ return \json_decode ( $ data , ... $ this ->decodeOpts ) ;
65
44
}
66
45
}
0 commit comments