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

如何在单个参数中包含多组JSON数据?PHP JSON编码失败求助

解决PHP JSON编码中general_params嵌套对象的问题

你的问题出在将general_params定义为JSON字符串,当json_encode处理整个响应数组时,这个字符串会被当作普通文本转义,导致最终输出里general_params是带引号的字符串,而非预期的嵌套JSON对象。

正确写法:用PHP数组构建嵌套结构

直接用PHP关联数组来表示general_params的内容,json_encode会自动将其转换为嵌套的JSON对象:

$validated = true;
$message = 'Payment made';
// 用PHP数组替代手动拼接的JSON字符串
$general_params = [
    "name" => "Ali Mercy",
    "amount" => "10000",
    "txrefid" => "1234567"
];
response($validated, $message, $general_params);

function response($validated, $message, $general_params){
    $response['validated'] = $validated;
    $response['message'] = $message;
    $response['general_params'] = $general_params;
    
    // 加上JSON_PRETTY_PRINT参数生成格式化的JSON输出,和预期格式一致
    $json_response = json_encode($response, JSON_PRETTY_PRINT);
    echo $json_response;
}

特殊场景:如果必须使用JSON字符串

如果general_params的内容是从其他地方获取的JSON字符串,可以先用json_decode将其转换为PHP数组/对象,再传入响应函数:

$validated = true;
$message = 'Payment made';
// 假设这是从外部获取的JSON字符串
$general_params_str = '{"name": "Ali Mercy","amount": "10000","txrefid": "1234567"}';
// 将JSON字符串转成PHP关联数组
$general_params = json_decode($general_params_str, true);

response($validated, $message, $general_params);

function response($validated, $message, $general_params){
    $response['validated'] = $validated;
    $response['message'] = $message;
    $response['general_params'] = $general_params;
    
    $json_response = json_encode($response, JSON_PRETTY_PRINT);
    echo $json_response;
}

运行以上代码后,就能得到你预期的嵌套JSON结构输出。

内容的提问来源于stack exchange,提问作者Ngode Danuel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:06:18