如何通过PHP循环生成Adobe Sign API的mergeFieldInfo JSON结构?
当然可以!手动写60多个字段确实效率低下,用PHP遍历数组绝对是高效解决这个问题的最优方案。我来给你一步步拆解实现方式:
核心实现思路
本质就是利用PHP的遍历功能,把你拆分好的字段数组(确保键名和PDF字段名一一对应),批量转换成Adobe Sign API要求的mergeFieldInfo结构,最后再转成JSON即可。
1. 准备字段映射数组
首先确保你拆分后的数组,键名和PDF文档里的字段名称完全一致(比如数组键是Trading Name,对应PDF里的字段也叫Trading Name),这样遍历的时候直接用键名当fieldName,值当defaultValue就行。示例数组如下:
// 这是某一个PDF对应的公司信息字段数组 $companyFields = [ 'Trading Name' => 'ABC Trading Co.', 'Company Website' => 'https://abctrading.com', // 剩下60+个字段按这个格式补充... ];
2. 遍历生成mergeFieldInfo结构
用foreach循环遍历数组,把每个键值对转换成API需要的数组结构,存到新数组中:
$mergeFieldInfo = []; foreach ($companyFields as $fieldName => $defaultValue) { $mergeFieldInfo[] = [ 'defaultValue' => $defaultValue, 'fieldName' => $fieldName ]; }
3. 转换为JSON格式
最后用json_encode()把数组转成符合要求的JSON字符串,加JSON_PRETTY_PRINT参数可以让输出更易读:
$jsonOutput = json_encode(['mergeFieldInfo' => $mergeFieldInfo], JSON_PRETTY_PRINT); // 可以直接输出查看结果,或者传给Adobe Sign API echo $jsonOutput;
处理多PDF场景
因为你有3个不同的PDF,每个字段集合不同,你可以把每个PDF的字段数组放到一个多维数组里,批量处理:
// 三个PDF对应的字段集合,键为PDF标识,值为该PDF的字段键值对 $pdfFieldSets = [ 'contract_pdf' => [/* 合同PDF的60+字段 */], 'invoice_pdf' => [/* 发票PDF的60+字段 */], 'quote_pdf' => [/* 报价单PDF的60+字段 */] ]; // 遍历每个PDF,生成对应JSON foreach ($pdfFieldSets as $pdfName => $fields) { $mergeFieldInfo = []; foreach ($fields as $fieldName => $defaultValue) { $mergeFieldInfo[] = [ 'defaultValue' => $defaultValue, 'fieldName' => $fieldName ]; } $json = json_encode(['mergeFieldInfo' => $mergeFieldInfo], JSON_PRETTY_PRINT); // 这里可以把$json传给对应PDF的API请求,或者保存备用 echo "{$pdfName}对应的JSON:\n{$json}\n\n"; }
额外注意事项
- 务必保证数组键名和PDF字段名完全匹配,包括大小写、空格,否则Adobe Sign无法识别对应字段。
- 如果需要跳过空值字段,可以在遍历中加入判断:
foreach ($companyFields as $fieldName => $defaultValue) { // 跳过空值字段(可选,根据你的业务需求调整) if (empty($defaultValue)) continue; $mergeFieldInfo[] = [ 'defaultValue' => $defaultValue, 'fieldName' => $fieldName ]; }
这样不管有多少字段,几秒钟就能生成符合要求的JSON结构,再也不用手动重复劳动了!
内容的提问来源于stack exchange,提问作者Kyle
相关产品推荐
相关产品推荐

