You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何在未知字段参数时获取Helloworks API的JSON记录值

问题描述

我正在使用Helloworks API,以下PHP代码可通过curl正确且成功地打印姓名、邮箱和年龄的JSON记录:

$response='{"data":{"audit_trail_hash":"ba8b9942b55e4e0fdad66a43cc4be257a4dfc3b632d594b690a2ecc2ea5ae8ef","data":{"form_Hpp8Ml":{"field_DMoHYX":"nancy","field_vprQI8":"nancy@gmail.com" ,"field_bvc876":"24 years"}},"document_hashes":{"form_Hpp8Ml":"ab906e7f19810e47559c45b3a43b4647b9d567c2b90acb8581c10d4e6fd51bb8"},"id":"aBQm8GHZcsjF64TD","metadata":null,"mode":"live","status":"completed","workflow_id":"OcoAStmswMbrEem2"}}
';

$json = json_decode($response, true);
 // print_r($json);

echo "<br><br>";

echo $name= $json["data"]["data"]["form_Hpp8Ml"]["field_DMoHYX"];
echo $email= $json["data"]["data"]["form_Hpp8Ml"]["field_vprQI8"];
echo $age= $json["data"]["data"]["form_Hpp8Ml"]["field_bvc876"];

form_Hpp8Ml、field_DMoHYX、field_vprQI8、field_bvc876这4个字段参数是Helloworks.com API针对不同用户输入返回的随机字段,我不想每次展示记录时都修改这些字段参数,是否有办法动态绕过或处理这些随机参数来获取姓名、邮箱和年龄的记录?

解决方案

可以通过遍历动态键名的方式获取数据,无需硬编码随机字段:

方法1:按字段顺序提取

因为返回的表单数据通常只有一个随机命名的form节点,直接用current()获取表单内容,再按顺序提取字段值:

$response='{"data":{"audit_trail_hash":"ba8b9942b55e4e0fdad66a43cc4be257a4dfc3b632d594b690a2ecc2ea5ae8ef","data":{"form_Hpp8Ml":{"field_DMoHYX":"nancy","field_vprQI8":"nancy@gmail.com" ,"field_bvc876":"24 years"}},"document_hashes":{"form_Hpp8Ml":"ab906e7f19810e47559c45b3a43b4647b9d567c2b90acb8581c10d4e6fd51bb8"},"id":"aBQm8GHZcsjF64TD","metadata":null,"mode":"live","status":"completed","workflow_id":"OcoAStmswMbrEem2"}}
';

$json = json_decode($response, true);

// 获取唯一的表单数据(跳过随机form键)
$formData = current($json["data"]["data"]);

// 按顺序提取:姓名、邮箱、年龄
$values = array_values($formData);
$name = $values[0];
$email = $values[1];
$age = $values[2];

echo $name . "<br>";
echo $email . "<br>";
echo $age . "<br>";

方法2:按内容特征匹配

如果字段顺序不确定,可通过内容格式判断类型:

$json = json_decode($response, true);
$formData = current($json["data"]["data"]);

$name = '';
$email = '';
$age = '';

foreach ($formData as $value) {
    // 匹配邮箱格式
    if (filter_var($value, FILTER_VALIDATE_EMAIL)) {
        $email = $value;
    } 
    // 匹配年龄格式(包含years关键词)
    elseif (str_contains($value, 'years')) {
        $age = $value;
    } 
    // 剩余内容判定为姓名
    else {
        $name = $value;
    }
}

echo $name . "<br>";
echo $email . "<br>";
echo $age . "<br>";

补充说明

  • 如果API可能返回多个随机form节点,可改用foreach遍历$json["data"]["data"]处理每个表单
  • 若内容特征不够明确,建议查看Helloworks API文档,确认是否返回字段元数据(如标签、类型),可基于元数据精准匹配

内容的提问来源于stack exchange,提问作者Nancy Moore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 17:50:29