PHP中将指定关联数组转换为目标JSON格式的方法求助
解决方案
我来帮你搞定这个转换问题!你的代码之所以没达到预期,主要有两个原因:
- 你在
array_map的回调里返回的是索引数组,而目标格式需要每个元素是带指定键名的关联数组(对应JSON里的对象) - 没有把原数组里的
name字段映射成目标需要的name1键名
下面是修正后的代码,完全匹配你想要的JSON格式:
$tableData = ['data' => array_map(function($session) { return [ 'id' => (string)$session['id'], // 转成字符串,匹配目标里的"1000"格式 'name1' => $session['name'], // 将原name字段重命名为name1 'name2' => $session['name2'], 'name3' => $session['name3'] ]; }, $response)]; return response()->json($tableData);
代码说明:
- 关联数组返回:回调函数返回的是带明确键名的关联数组,这样
json()方法会把它序列化为JSON对象(而非数组) - 键名调整:把原字段
name替换成目标要求的name1 - 类型转换:将
id从数字转为字符串,完全匹配你给出的目标JSON格式(如果不需要字符串类型,可以去掉(string)强制转换)
举个简单测试例子,假设你的$response有一个元素:
$response = [ 1000 => [ "id" => 1000, "name" => "name", "name2" => "name2", "name3" => "name3" ] ];
运行修正后的代码,输出的JSON会是:
{ "data": [ { "id": "1000", "name1": "name", "name2": "name2", "name3": "name3" } ] }
完全符合你的需求~
内容的提问来源于stack exchange,提问作者valera
相关产品推荐
相关产品推荐

