php - 使用 HTTPful 请求 JSON 数据时如何获取数组而不是对象

标签 php arrays json rest httpful

我正在使用 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/

相关文章:

php - 检测字符串输入是否包含 HTML 的正确方法是什么?

php - 如何在不复制的情况下在php中重新索引数组

javascript - for 循环仅适用于最后一项

java - 从 Android 访问基于 SOAP 的 Web 服务时出现 ClassCastException

javascript - 维基百科 API 不返回任何数据

php - 1044 - 用户 'homestead' @localhost 的访问被拒绝

php - 使用 fpdf 使文本适合单元格

javascript - JavaScript 中的Reduce 方法

javascript - 使用javascript调用webservice的问题

PHP : writing a simple removeEmoji function