diff --git a/src/Illuminate/Database/Eloquent/Casts/AsArrayObject.php b/src/Illuminate/Database/Eloquent/Casts/AsArrayObject.php index 29e9cefc0769..2ee6b56e0901 100644 --- a/src/Illuminate/Database/Eloquent/Casts/AsArrayObject.php +++ b/src/Illuminate/Database/Eloquent/Casts/AsArrayObject.php @@ -23,14 +23,14 @@ public function get($model, $key, $value, $attributes) return; } - $data = json_decode($attributes[$key], true); + $data = Json::decode($attributes[$key]); return is_array($data) ? new ArrayObject($data) : null; } public function set($model, $key, $value, $attributes) { - return [$key => json_encode($value)]; + return [$key => Json::encode($value)]; } public function serialize($model, string $key, $value, array $attributes) diff --git a/src/Illuminate/Database/Eloquent/Casts/AsCollection.php b/src/Illuminate/Database/Eloquent/Casts/AsCollection.php index b6644da18cca..dcb7a23e527d 100644 --- a/src/Illuminate/Database/Eloquent/Casts/AsCollection.php +++ b/src/Illuminate/Database/Eloquent/Casts/AsCollection.php @@ -24,14 +24,14 @@ public function get($model, $key, $value, $attributes) return; } - $data = json_decode($attributes[$key], true); + $data = Json::decode($attributes[$key]); return is_array($data) ? new Collection($data) : null; } public function set($model, $key, $value, $attributes) { - return [$key => json_encode($value)]; + return [$key => Json::encode($value)]; } }; } diff --git a/src/Illuminate/Database/Eloquent/Casts/AsEncryptedArrayObject.php b/src/Illuminate/Database/Eloquent/Casts/AsEncryptedArrayObject.php index 2835f5473837..448f23db0cbb 100644 --- a/src/Illuminate/Database/Eloquent/Casts/AsEncryptedArrayObject.php +++ b/src/Illuminate/Database/Eloquent/Casts/AsEncryptedArrayObject.php @@ -21,7 +21,7 @@ public static function castUsing(array $arguments) public function get($model, $key, $value, $attributes) { if (isset($attributes[$key])) { - return new ArrayObject(json_decode(Crypt::decryptString($attributes[$key]), true)); + return new ArrayObject(Json::decode(Crypt::decryptString($attributes[$key]))); } return null; @@ -30,7 +30,7 @@ public function get($model, $key, $value, $attributes) public function set($model, $key, $value, $attributes) { if (! is_null($value)) { - return [$key => Crypt::encryptString(json_encode($value))]; + return [$key => Crypt::encryptString(Json::encode($value))]; } return null; diff --git a/src/Illuminate/Database/Eloquent/Casts/AsEncryptedCollection.php b/src/Illuminate/Database/Eloquent/Casts/AsEncryptedCollection.php index a4ed9faac504..1efa4478e411 100644 --- a/src/Illuminate/Database/Eloquent/Casts/AsEncryptedCollection.php +++ b/src/Illuminate/Database/Eloquent/Casts/AsEncryptedCollection.php @@ -22,7 +22,7 @@ public static function castUsing(array $arguments) public function get($model, $key, $value, $attributes) { if (isset($attributes[$key])) { - return new Collection(json_decode(Crypt::decryptString($attributes[$key]), true)); + return new Collection(Json::decode(Crypt::decryptString($attributes[$key]))); } return null; @@ -31,7 +31,7 @@ public function get($model, $key, $value, $attributes) public function set($model, $key, $value, $attributes) { if (! is_null($value)) { - return [$key => Crypt::encryptString(json_encode($value))]; + return [$key => Crypt::encryptString(Json::encode($value))]; } return null; diff --git a/src/Illuminate/Database/Eloquent/Casts/AsEnumArrayObject.php b/src/Illuminate/Database/Eloquent/Casts/AsEnumArrayObject.php index d8c91875d560..f5f0571bca50 100644 --- a/src/Illuminate/Database/Eloquent/Casts/AsEnumArrayObject.php +++ b/src/Illuminate/Database/Eloquent/Casts/AsEnumArrayObject.php @@ -34,7 +34,7 @@ public function get($model, $key, $value, $attributes) return; } - $data = json_decode($attributes[$key], true); + $data = Json::decode($attributes[$key]); if (! is_array($data)) { return; @@ -61,7 +61,7 @@ public function set($model, $key, $value, $attributes) $storable[] = $this->getStorableEnumValue($enum); } - return [$key => json_encode($storable)]; + return [$key => Json::encode($storable)]; } public function serialize($model, string $key, $value, array $attributes) diff --git a/src/Illuminate/Database/Eloquent/Casts/AsEnumCollection.php b/src/Illuminate/Database/Eloquent/Casts/AsEnumCollection.php index 2cdce9d622aa..ff632ed223cd 100644 --- a/src/Illuminate/Database/Eloquent/Casts/AsEnumCollection.php +++ b/src/Illuminate/Database/Eloquent/Casts/AsEnumCollection.php @@ -34,7 +34,7 @@ public function get($model, $key, $value, $attributes) return; } - $data = json_decode($attributes[$key], true); + $data = Json::decode($attributes[$key]); if (! is_array($data)) { return; @@ -52,9 +52,9 @@ public function get($model, $key, $value, $attributes) public function set($model, $key, $value, $attributes) { $value = $value !== null - ? (new Collection($value))->map(function ($enum) { + ? Json::encode((new Collection($value))->map(function ($enum) { return $this->getStorableEnumValue($enum); - })->toJson() + })->jsonSerialize()) : null; return [$key => $value]; diff --git a/src/Illuminate/Database/Eloquent/Casts/Json.php b/src/Illuminate/Database/Eloquent/Casts/Json.php new file mode 100644 index 000000000000..6b1a3dc77796 --- /dev/null +++ b/src/Illuminate/Database/Eloquent/Casts/Json.php @@ -0,0 +1,54 @@ +