PHP如何从给定JSON响应中提取custom_fields内的full_name字段值
问题原因
你代码报错的核心原因是对custom_fields字段的数据类型判断错误:
custom_fields是JSON索引数组(结构被[]包裹),经过json_decode解析后会转为PHP索引数组,而非对象,无法直接通过->访问不存在的属性- 数组内的每个元素是独立对象,
full_name是元素中variable_name的属性值,而非对象的顶层属性
解决方法
方法1:固定下标取值(仅适用于字段顺序固定的场景)
如果可以确定full_name永远是custom_fields数组的第一个元素,可直接通过下标取值:
<?php $obj = json_decode($myjsonabove); $status = $obj->data->status; // 取下标0的数组元素,再取其value属性 $full_name = $obj->data->metadata->custom_fields[0]->value; $amount = $obj->data->amount/100; ?>
方法2:遍历生成关联数组(推荐,适用于全量字段提取、顺序不固定的场景)
先遍历custom_fields生成以variable_name为键的关联数组,后续可直接按需取用所有字段值:
<?php $obj = json_decode($myjsonabove); $status = $obj->data->status; $amount = $obj->data->amount/100; // 遍历生成关联数组,兼容字段顺序变化的场景 $customFields = []; foreach ($obj->data->metadata->custom_fields as $item) { $customFields[$item->variable_name] = $item->value; } // 全量字段可直接从$customFields中读取 $full_name = $customFields['full_name']; $school_name = $customFields['school_name']; $mobile_number = $customFields['mobile_number']; ?>
内容的提问来源于stack exchange,提问作者Datapalace
相关产品推荐
相关产品推荐

