我正在使用 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
但我一直在阅读documentation甚至 the source ,而且我在任何地方都看不到该选项...我能想到的唯一方法是自己制作 MimeHandlerAdapter
它执行 json_decode($data, true)
但如果某处有一个选项,这似乎是一种相当落后的方式......
最佳答案
回答这个问题可能有点晚,但我在使用 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();
关于php - 使用 HTTPful 请求 JSON 数据时如何获取数组而不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20079631/