1 | <?php |
||
2 | |||
3 | declare(strict_types=1); |
||
4 | |||
5 | namespace Chubbyphp\Deserialization\Decoder; |
||
6 | |||
7 | use Chubbyphp\Deserialization\DeserializerRuntimeException; |
||
8 | |||
9 | final class JsonTypeDecoder implements TypeDecoderInterface |
||
10 | { |
||
11 | public function getContentType(): string |
||
12 | { |
||
13 | return 'application/json'; |
||
14 | 3 | } |
|
15 | |||
16 | 3 | /** |
|
17 | * @throws DeserializerRuntimeException |
||
18 | */ |
||
19 | public function decode(string $data): array |
||
20 | { |
||
21 | $decoded = $json = json_decode($data, true); |
||
0 ignored issues
–
show
Unused Code
introduced
by
Loading history...
|
|||
22 | |||
23 | if (JSON_ERROR_NONE !== json_last_error()) { |
||
24 | throw DeserializerRuntimeException::createNotParsable($this->getContentType(), json_last_error_msg()); |
||
25 | } |
||
26 | 4 | ||
27 | if (!is_array($decoded)) { |
||
28 | 4 | throw DeserializerRuntimeException::createNotParsable($this->getContentType(), 'Not an object'); |
|
29 | } |
||
30 | 4 | ||
31 | 1 | return $decoded; |
|
32 | } |
||
33 | } |
||
34 |