...Zend Json Json :: decode(...)を使用してPHPでUnicodeエンコードされたJSONをデコードする方法は?
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();
...とは、Unicodeは、次のようにJSONをエンコードます:
...{"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"...
まず、私はjson_decode(...)
でそれを解読しようとしました。しかし、私はこれをPHPで(疑わしい正規表現ベースのアプローチなしに)行う適切な方法を見つけられませんでした。
は今、私はZend\Json\Json::decode(...)
でそれをしようと、次のエラーを取得しています:
/var/www/path/to/project/vendor/zendframework/zend-json/src/Json.php:243
Decoding failed: Syntax error
UnicodeでエンコードされたJSONはZend\Json
とデコードを取得する方法は? JSONが壊れていることだけで通知
EDIT
、。それは2つの部分に分かれています。文字列は1f9e
で始まり、次に最初の部分、次に文字列\u043
、次に2番目の内容部分、次に0
で始まります。
1f9e <-- What is it?
{"_li...
\u043 <-- What is it?
1a6...
tfoli <-- What is it?
0
あなたはJSONが有効であることを確認していますか? –
私も郵便配達員と一緒にそれをテストしました。だから、はい、私はそれが有効であることを確信できると思います。しかし、コード化される。 – automatix
お待ちください、多分あなたは正しいです。 Postmanの "pretty"ビューからのAPIコールの出力を 'Json :: decode(...)'に置くだけです。それから私は "生の"ビューから同じ出力を入れます。私はそれがうまくいかないと思った。しかし実際にはうまくいっています。ですから、Zend \ Http \ Response#getContent()から取得したJSONには本当に問題があるようです。 – automatix