我在 PHP 以及 Laravel 框架中绝对是新的(我不知道Laravel是否为这类任务提供了一些实用工具类)。我来自 Java 。
所以我有以下问题:
进入一个类我执行一个REST Web服务调用,如下所示:
$response = $client->get('http://localhost:8080/Extranet/login',
[
'auth' => [
'dummy@gmail.com',
'pswd'
]
]);
$dettagliLogin = json_decode($response->getBody());
\Log::info('response: '.(json_encode($dettagliLogin)));
$ response-> getBody()包含返回的 JSON 对象,这是前一个 \ Log :: info()的输出:
{
"id":5,
"userName":"Dummy User",
"email":"dummy@gmail.com",
"enabled":true
}
所以我有以下问题:
1)究竟是什么返回 json_decode()函数?我真的无法理解,因为PHP没有强类型,我没有声明的返回类型。
这是方法签名:
function json_decode($json, $assoc = false, $depth = 512, $options = 0)
并在相关文档中说 @return mixed 。什么exatly意味着混合?
2)无论如何,主要问题是:我必须使用先前返回的 JSON 对象的内容,并将这些值放入数组的相关字段中,如下所示:
$attributes = array(
'id' => HERE THE id FIELD VALUE OF MY JSON OBJECT,
'username' => HERE THE email FIELD VALUE OF MY JSON OBJECT',
'name' => HERE THE userName FIELD VALUE OF MY JSON OBJECT,
);
所以我认为我必须解析 $ response-> getBody()或 json_decode($ response-> getBody())获得这些价值观。但我怎么能这样做呢?什么是更简洁的方法呢? Laravel fframework提供了一些实用工具吗?
TNX
答案 0 :(得分:2)
为了更好地理解,让我们首先描述 - 什么是JSON? 它是一种在字符串中表示对象(数组,对象等)的方法。
1)究竟什么返回json_decode()函数?我真的不能 理解,因为PHP没有强类型,我没有声明 返回类型。这是方法签名:
函数json_decode($ json,$ assoc = false,$ depth = 512,$ options = 0)并且在相关文档中它表示@return混合。什么是繁琐的意思 混合
json_deocde将JSON字符串转换为原始"结构"它代表着。
@return mixed意味着json_decode的返回值可以是任何类型的变量。如果JSON代表一个数组 - 它将是一个数组类型,如果它代表一个对象 - 它将是一个对象类型。
2)无论如何主要问题是:我必须使用的内容 先前返回的JSON对象并将这些值放入相关的 像这样的数组的字段:
$ attributes = array( ' ID' =>这里是我的JSON对象的id字段值, '用户名' =>在这里我的JSON对象的电子邮件字段值', '名称' =>这里是我的JSON OBJECT的userName字段值, );
为了确保您的JSON代表哪种类型的变量,您可以使用var_dump(json_decode($json));
。无论如何,它是一个类对象。
因此:
$object = json_decode($json);
$attributes = array(
'id' => $object->id,
'username' => $object->email,
'name' => $object->userName,
);
答案 1 :(得分:1)
如果json
字符串是一个对象(不是数组),它将返回一个对象(类型为stdClass
)。混合意味着它可以是多个东西,所以如果它是一个json数组,你就得到一个数组。
最好的办法是使用json_decode
,然后使用var_dump
(或var_export
)来查看实际获得的内容。