Ich bin für eine API, um einen Client zu schreiben ...Wie dekodiert man Unicode-encoded JSON in PHP mit Zend Json Json :: decode (...)?
use Zend\Http\Client;
use Zend\Http\Request;
use Zend\Json\Json;
...
$request = new Request();
$request->getHeaders()->addHeaders([
'Accept-Charset' => 'UTF-8',
'Accept' => 'application/hal+json',
'Content-Type' => 'application/hal+json; charset=UTF-8',
]);
$apiAddress = 'http://my.project.tld/categories';
$request->setUri($apiAddress);
$request->setMethod('GET');
$client = new Client();
$response = $client->dispatch($request);
$data = $response->getContent();
... und eine Unicode-JSON wie folgt codiert:
...{"id":"7","title":"\u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438","short_name":"\u0418\u041b\u041b\u042e\u0421\u0422\u0420\u0410\u0426\u0418\u0418"...
Zuerst habe ich versucht, es zu entschlüsseln mit json_decode(...)
. Aber ich habe keine geeignete Methode gefunden, um dies in PHP zu tun (ohne verdächtige Regex-basierte Ansätze).
Jetzt versuche ich es mit Zend\Json\Json::decode(...)
und folgende Störung zu erhalten:
/var/www/path/to/project/vendor/zendframework/zend-json/src/Json.php:243
Decoding failed: Syntax error
Wie ein Unicode-codierte bekommen JSON mit Zend\Json
decodiert?
EDIT
gerade bemerkt, dass die JSON gebrochen ist. Es ist in zwei Teile getrennt. Die Zeichenfolge beginnt mit 1f9e
, dann der erste Teil, dann die Zeichenfolge \u043
, dann der zweite Inhaltsteil, dann 0
.
1f9e <-- What is it?
{"_li...
\u043 <-- What is it?
1a6...
tfoli <-- What is it?
0
Sind Sie sicher, dass das JSON gültig ist? –
Ich habe es auch mit Postman getestet. Also, ja, ich denke, ich kann sicher sein, dass es gültig ist. Aber codiert. – automatix
Warte, vielleicht hast du recht. Setzen Sie einfach die Ausgabe des API-Aufrufs von Postmans "hübscher" Ansicht auf die 'Json :: decode (...)' - Funktion. Dann habe ich die gleiche Ausgabe aus der "rohen" Ansicht. Ich habe erwartet, dass es nicht funktioniert. Aber tatsächlich hat es auch funktioniert. So, es scheint wirklich ein Problem mit dem JSON zu sein, das ich von 'Zend \ Http \ Response # getContent()' bekomme. – automatix