如何在单个参数中包含多组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
相关产品推荐
相关产品推荐

