如何访问名称中包含 ::(冒号)的对象属性

问题描述 投票:0回答:1

所以这可能是一个简单的问题,但我无法找到答案,因为我有一个变量,它查看标准类对象并存储各个字段名称中的值。不幸的是,我的字段之一称为 [JOB::c_job_id]。如果我在我的变量中使用它

$jobid = ($json_data_single->response->data[0]->fieldData->JOB::c_job_id);

然后它认为

::
是范围解析运算符(::),但我只想从字段中检索数据,我该怎么做?

php json variables properties
1个回答
1
投票

如果您无法重命名 JSON 中那个非常不幸的命名键,您可以采取以下方法之一:

$json = '{"JOB::c_job_id": 453}';

$decodedAsObject = json_decode($json);
var_dump($decodedAsObject->{'JOB::c_job_id'});

$decodedAsArray = json_decode($json, true);
var_dump($decodedAsArray['JOB::c_job_id']);

第一个要求您将属性名称括在

{}
中以使其按字面解释。另一个更简单,因为当您解码为数组时,数组键是简单的字符串,当它们包含可以被解释为具有特殊执行含义的字符或字符序列时,不会出现任何问题。

可在此处进行实时测试。

© www.soinside.com 2019 - 2024. All rights reserved.