2016-10-10 7 views
1

Ich versuche zu validieren, dass eine Eingabe gültig Json ist. Es gibt jedoch Erfolg für "123" als Eingabe zurück. Dies scheint nicht gültig zu sein oder ist zumindest nicht gültig in Bezug auf was ich brauche.Formular Anfrage Validierung JSON

Kennen Sie einen Weg, um die Validierung für JSON-Eingabe zu verbessern?

public function rules() 
{ 
    switch($this->method()) { 
     case "GET": 
      return []; 
     case "DELETE": 
      return []; 
     default: 
      return [ 
       'name' => 'required', 
       'templatestring' => 'required|JSON' 
      ]; 
    } 
} 
+2

'123' * ist * gültiger JSON soweit PHP betroffen ist. 'json_decode ('123')' oder versuche es unter http://jsonlint.com/. – ceejayoz

Antwort

2

123 ist eine gültige JSON auf der Grundlage der neueren RFC 7159.

Wenn Sie versuchen, eine JSON-Zeichenfolge basierend auf RFC 4627 zu validieren, sollten Sie wahrscheinlich die Validierungsregel regex verwenden. Zum Beispiel:

$data = [ 
    'name'   => 'test', 
    'templatestring' => '123' 
]; 

$validator = Validator::make($data, [ 
    'name'   => 'required', 
    'templatestring' => 'required|regex:/[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]/' 
]); 

// With `123` this returns true (as it fails). 
// If you set $data['templatestring'] = '{"test": 123}' this returns false. 
return $validator->fails(); 

Die Regex wurde von this answer genommen.

+0

vielen Dank! –