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

CodeIgniter中处理Soap客户端返回JSON:移除GetCodeResult层级

解决SOAP响应移除GetCodeResult层级的问题

完全懂你的需求!你已经用CodeIgniter搭好SOAP客户端拿到了数据,现在只需要简单几步就能把外层的GetCodeResult去掉,直接拿到里面的价格数据。

处理步骤(两种常见场景)

场景1:响应是JSON字符串

如果Web服务返回的是JSON格式字符串,解码后直接提取目标层级就行:

// 假设$rawResponse是从Web服务获取的原始响应
$rawResponse = '{"GetCodeResult": { "Selling":"1000.67114", "Buying":"9000.65789" } }';

// 把JSON转成关联数组(第二个参数设为true)
$responseArray = json_decode($rawResponse, true);

// 直接提取GetCodeResult对应的内容
$cleanData = $responseArray['GetCodeResult'];

// 如需转回JSON格式
$finalJson = json_encode($cleanData);

// 此时$finalJson就是你要的格式:{"Selling":"1000.67114","Buying":"9000.65789"}

场景2:响应是SOAP对象

如果CodeIgniter的SOAP客户端直接返回对象(比如用内置SOAP类或第三方库),处理更直接:

// 假设$soapClient是你的SOAP客户端实例,调用接口后得到$result对象
$result = $soapClient->GetCode();

// 直接提取对象的GetCodeResult属性
$cleanData = $result->GetCodeResult;

// 转成JSON格式的话
$finalJson = json_encode($cleanData);

额外提示:增加容错处理

为了避免响应结构变化导致报错,建议加上存在性检查:

// 数组场景的容错
if (isset($responseArray['GetCodeResult'])) {
    $cleanData = $responseArray['GetCodeResult'];
} else {
    // 设置默认值或记录日志
    $cleanData = ['Selling' => 0, 'Buying' => 0];
}

// 对象场景的容错
if (property_exists($result, 'GetCodeResult')) {
    $cleanData = $result->GetCodeResult;
} else {
    $cleanData = (object) ['Selling' => 0, 'Buying' => 0];
}

这样就能稳稳拿到你想要的格式啦!

内容的提问来源于stack exchange,提问作者Didos Rukundo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:11:08