diff --git a/src/Illuminate/Validation/Concerns/ValidatesAttributes.php b/src/Illuminate/Validation/Concerns/ValidatesAttributes.php index a7a6071ab5b5..d62ec0ee9513 100644 --- a/src/Illuminate/Validation/Concerns/ValidatesAttributes.php +++ b/src/Illuminate/Validation/Concerns/ValidatesAttributes.php @@ -1160,6 +1160,10 @@ public function validateIpv6($attribute, $value) */ public function validateJson($attribute, $value) { + if (is_array($value)) { + return false; + } + if (! is_scalar($value) && ! method_exists($value, '__toString')) { return false; } diff --git a/tests/Validation/ValidationValidatorTest.php b/tests/Validation/ValidationValidatorTest.php index b6c6ab2281ae..a176ce42a055 100755 --- a/tests/Validation/ValidationValidatorTest.php +++ b/tests/Validation/ValidationValidatorTest.php @@ -1510,6 +1510,10 @@ public function testValidateJson() $trans = $this->getIlluminateArrayTranslator(); $v = new Validator($trans, ['foo' => '{"name":"John","age":"34"}'], ['foo' => 'json']); $this->assertTrue($v->passes()); + + $trans = $this->getIlluminateArrayTranslator(); + $v = new Validator($trans, ['foo' => ['array']], ['foo' => 'json']); + $this->assertFalse($v->passes()); } public function testValidateBoolean()