Frage

Wer weiß, einen robusten (und bullet proof) is_JSON Funktion Schnipsel für PHP? Ich (natürlich) eine Situation, wo ich wissen muss, ob ein String JSON ist oder nicht.

Hmm, vielleicht laufen sie durch eine JSONLint Anfrage- / Antwort, aber das scheint ein bisschen übertrieben.

War es hilfreich?

Lösung

Wenn Sie die integrierten verwenden in json_decode PHP-Funktion, < a href = "http://php.net/manual/en/function.json-last-error.php" rel = "noreferrer"> json_last_error liefert den letzten Fehler (zB JSON_ERROR_SYNTAX wenn die Zeichenfolge wasn‘ t JSON).

In der Regel json_decode kehrt null trotzdem.

Andere Tipps

Was ist mit json_decode , die null zurückkehren sollte, wenn der angegebene String nicht gültig JSON-codierten Daten war

Siehe Beispiel 3 auf der Manual-Seite:

// the following strings are valid JavaScript but not valid JSON

// the name and value must be enclosed in double quotes
// single quotes are not valid 
$bad_json = "{ 'bar': 'baz' }";
json_decode($bad_json); // null

// the name must be enclosed in double quotes
$bad_json = '{ bar: "baz" }';
json_decode($bad_json); // null

// trailing commas are not allowed
$bad_json = '{ bar: "baz", }';
json_decode($bad_json); // null

Für meine Projekte verwende ich diese Funktion (bitte lesen Sie den " Hinweis " auf dem json_decode () docs).

Vorbei die gleichen Argumente, die Sie zu json_decode passieren würde () Sie können spezifische Anwendung „Fehler“ erkennen (z Tiefe Fehler)

Mit PHP> = 5.6

// PHP >= 5.6
function is_JSON(...$args) {
    json_decode(...$args);
    return (json_last_error()===JSON_ERROR_NONE);
}

Mit PHP> = 5.3

// PHP >= 5.3
function is_JSON() {
    call_user_func_array('json_decode',func_get_args());
    return (json_last_error()===JSON_ERROR_NONE);
}

Anwendungsbeispiel:

$mystring = '{"param":"value"}';
if (is_JSON($mystring)) {
    echo "Valid JSON string";
} else {
    $error = json_last_error_msg();
    echo "Not valid JSON string ($error)";
}

nicht mit einer json_decode() Arbeit für Sie json_last_error()? Suchen Sie nur eine Methode zu sagen, „tut diese aussehen wie JSON“ oder tatsächlich bestätigen? json_decode() wäre der einzige Weg, um effektiv zu validieren es in PHP.

$this->post_data = json_decode( stripslashes( $post_data ) );
  if( $this->post_data === NULL )
   {
   die( '{"status":false,"msg":"The post_data parameter must be valid JSON"}' );
   }

Dies ist der beste und effizienteste Weg,

function isJson($string) {
    return (json_decode($string) == null) ? false : true;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top