4

HTTPfulを使用して PHP でいくつかのリクエストを送信し、JSON でデータを取得していますが、ライブラリは結果をオブジェクトに変換しており、結果を配列にしたいと考えています。つまり、json_decode($data)ではなく を実行しjson_decode($data, true)ます。

後者を使用するオプションがどこかにありますが、どこにあるのかわかりません。このオプションは v0.2.2 で追加されました:

- FEATURE Add support for parsing JSON responses as associative arrays instead of objects

しかし、私はドキュメンテーションとソースさえ読んでいますが、どこにもオプションが表示されません...私が考えることができる唯一の方法は、を行う独自のMimeHandlerAdapterものを作成するjson_decode($data, true)ことですが、それはかなり逆の方法のようですどこかにオプションがあります...

4

3 に答える 3

3

これに答えるには少し遅いかもしれませんが、Httpful を使用しながら少し調査を行ったところ、答えが見つかりました。Httpful は、MIME タイプごとにデフォルトの一連のハンドラーを使用します。リクエストを送信する前に登録されている場合は、登録したものが使用されます。便利なことに、Httpful\Handlers\JsonHandlerクラスがあります。コンストラクターは、引数の配列を取ります。それが使用する唯一のものは$decode_as_array. したがって、次のような配列を返すようにすることができます。

// Create the handler
$json_handler = new Httpful\Handlers\JsonHandler(array('decode_as_array' => true));
// Register it with Httpful
Httpful\Httpful::register('application/json', $json_handler);
// Send the request
$response = Request::get('some-url')->send();

アップデート

リクエストに JSON を期待するように指示しないと、レスポンスがファンキーな配列に解析されることがあることに気付きました。ドキュメントによると、自動的に動作するはずですが、いくつか問題がありました。したがって、奇妙な出力が得られた場合は、次のように明示的にリクエストに JSON を期待するように伝えてみてください。

$response = Request::get('some/awesome/url')
    ->expects('application/json')
    ->send();
于 2014-03-23T21:03:15.080 に答える
2

私はこのライブラリを使用したことがありません。しかし、調査の結果、このオプションは src/Httpful/Handlers/JsonHandler.php の 11 行目にあることがわかりました。

そこに表示されます:

private $decode_as_array = false;

そして、このフラグは同じファイルの 27 行目で使用されています。

$parsed = json_decode($body, $this->decode_as_array);
于 2013-11-19T19:00:39.347 に答える
1

これを行うには、 decode_as_arraytrue値に設定する必要があります。

\Httpful\Httpful::register(\Httpful\Mime::JSON, new \Httpful\Handlers\JsonHandler(array('decode_as_array' => true)));

Request::getの呼び出し前

于 2016-08-22T14:22:13.287 に答える