PHP json_encode子数组缺失[]问题求助
解决PHP json_encode生成JSON数组格式的问题
你的问题出在freqList和srcList的数组结构上:当前这两个字段对应的是单个关联数组,json_encode会将其转为JSON对象({}包裹),但你需要的是JSON数组([]包裹)。只需把这两个字段的数组改成包含单个关联数组的二维索引数组即可。
修改后的PHP代码如下:
$my_array= [ 'freq' => $freq3, 'start_time' => $ts, 'emergency' => 0, 'encrypted' => 0, 'call_length' => $callDuration, 'talkgroup' => $tg, 'talkgroup_tag' => $AlphaTag, 'talkgroup_description' => $Description, 'talkgroup_group_tag' => $Tag, 'talkgroup_group' => $Category, 'audio_type' => "digital tdma", // 给关联数组外层多加一层[],使其成为索引数组的元素 'freqList' => [ [ 'freq' => $freq3, 'time' => $ts, 'pos' => 0, 'len' => $callDuration, 'error_count' => 0, 'spike_count' => 0 ] ], // 同理修改srcList 'srcList' => [ [ 'src' => $src, 'time' => $ts, 'pos' => 0, 'emergency' => 0, 'signal_system' => "", 'tag' => "" ] ] ]; $input2 = json_encode($my_array, JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT);
原理很简单:PHP中不带自定义键名的索引数组,会被json_encode转换为JSON数组([]);而带键名的关联数组会转为JSON对象({})。你需要的是包含单个对象的JSON数组,所以给原关联数组套一层[],让它成为索引数组的唯一元素就行。
内容的提问来源于stack exchange,提问作者kb2ear
相关产品推荐
相关产品推荐

