2016-04-18 12 views
1

Ich schreibe Unit-Tests gegen eine Funktion inspiriert von Fastest way to check if a string is JSON in PHP?Wie verschiedene Werte für json_last_error

Zum Beispiel zu bekommen, habe ich versucht, Steuerzeichen an den JSON-Strings, um das Hinzufügen json_last_error zu bekommen JSON_ERROR_CTRL_CHAR gleichen, aber es funktioniert nicht. Es gibt einen Fehler in JSON, aber scheinbar immer JSON_ERROR_SYNTAX. Ich habe einige Nachforschungen angestellt, bin mir aber nicht sicher, wie ich es auf bestimmte Weise zum Scheitern bringen kann.

Wie kann ich die folgenden JSON-Zeichenfolgen ändern, damit json_last_error zu etwas anderem als JSON_ERROR_SYNTAX oder JSON_ERROR_NONE ausgewertet wird?

$json = '[{user_id":"\x0230", "username":"stack"},{"user_id":14,"username":"over"}]'; 
$json = '[{"user_id":"\t\\r\\n", "username":"stack"},{"user_id":14,"username":"over"}]'; 

Vielen Dank im Voraus, Adam

Antwort

1

ich in der Lage war, ein JSON_ERROR_CTRL_CHAR wie diese zu bekommen:

$json = chr(0).'[{"user_id":"13", "username":"stack"},{"user_id":14,"username":"over"}]'; 

FYI, scheint es, den gleichen Fehler unabhängig davon zu geben, wo die chr(0) in der ist Zeichenfolge, und es funktioniert für mindestens chr(0) - chr(31), außer 9, 10 und 13.

+1

Auch gefunden [diese Antwort] (http://stackoverflow.co m/a/24543526/2734189), die einen 'JSON_ERROR_STATE_MISMATCH 'erhält. –

+0

@ dont-panic, Ich habe versucht, sowohl Ihre Antwort (um die Strg-Zeichen zu erhalten) und die Kommentar-Link für 'State Mismatch' Fehler und beide funktionierten großartig. Außerdem konnte ich den numerischen Fall im Schaltblock entfernen! Prost und vielen Dank. –

+0

Ich habe versucht, ein Beispiel zu finden, um den 'JSON_ERROR_UTF8'-Fall auszulösen, aber bis jetzt schien der auf der Manual-Page nicht zu funktionieren –

Verwandte Themen