Writing JSONDecodeOperator
We're going to work with calls to remote API's a few times throughout this book, so it would be very handy to have an operator that transforms JSON string responses into their PHP array representations.
This example looks like something that could be easily done with just the map()
operator:
// rxphp_06.php Rx\Observable::just('{"value":42}') ->map(function($value) { return json_decode($value, true); }) ->subscribe(new DebugSubject());
This prints the correct result for sure, as we can see in the following output:
$ php rxphp_06.php 16:39:50 [] onNext: {"value": 42} (array) 16:39:50 [] onCompleted
Well, but what about malformed JSON strings? What happens if we try to decode the following:
Rx\Observable::just('NA') ->map(function($value) { return json_decode($value, true); }) ->subscribe(new DebugSubject());
The function json_decode()
doesn't throw...