【发布时间】:2019-11-18 14:09:22
【问题描述】:
我的控制器输出的 JSON 格式有问题。它没有错,但我只需要将它更改为不同形式的 JSON。
我的 JSON 是这样的:
{"data": [{"function_name": "Y", "register_id": "1", "age": 26, "contract_from": "01-07-18", "contract_until": "31-12-99", "worked_hours": 1, "days": 9, "costs": 7, "hourly_rate": 2}]}
和我的控制器:
public function list_test(){
$filter = $this->input->post('filter');
$query = $this->db->query("select * from hc where contract_from = '".$filter."'")->result();
$data['data'] = $query;
print_r(json_encode($data,JSON_PRETTY_PRINT));
}
如何将要交换的数据中的花括号替换为方括号?
我的预期输出:
{"data": [["Y", "1", "26", "01-07-18", "31-12-99", "1", "9","7", "2"]]}
有可能吗?
【问题讨论】:
-
您的预期输出是无效的 JSON(检查 jsonlint.com)。您不能拥有带有命名元素的数组。
-
没有“JSON 的不同形式”。 JSON 是单一格式。将数组转换为 json 时,它可以变成
{"foo": "bar"}(转换关联数组)或["foo", "bar"](索引数组)。但是拥有["foo": "bar"]不是有效的JSON。键/值对是使用{}的对象,而列表只是[],可以包含一个值,但不能包含名称/键。 -
那是无效的 JSON。如果您出于某种原因需要将 {} 替换为 [],您可以在输出上执行 str_replace。
-
@NigelRen 哦,很抱歉先生,我已经编辑了我的预期输出。之前输入时出现人为错误。
-
您打算如何处理这些数据?预期的结果将很难使用,因为没有任何解释该值实际代表什么。如果您问我,您当前的输出看起来像是理想的格式。
标签: php arrays json multidimensional-array