使用多维数组将PHP数组转换为JSON

使用多维数组将PHP数组转换为JSON,php,arrays,json,Php,Arrays,Json,我正在尝试将这个php数组转换为json。这是我的代码: $c = array(); $c = array( $c['cronjobs'] = array( 'id'=>1189515, 'groupId'=>12379, ), ); $json = json_encode($c); echo $json; 这是我想要查看的输出: {cronjobs:[{id:1186437,groupId:12379]} 虽然使用上述代码,这是我得到的 [{id:1189

我正在尝试将这个php数组转换为json。这是我的代码:

$c = array();
$c = array(
$c['cronjobs'] = array(
    'id'=>1189515,
    'groupId'=>12379,
    ),
);
$json = json_encode($c);
echo $json;
这是我想要查看的输出: {cronjobs:[{id:1186437,groupId:12379]}

虽然使用上述代码,这是我得到的 [{id:1189515,groupId:12379}]

[{cronjobspat]未出现


我不确定我做错了什么。

这是格式化数组的方法:

$c = array(); // declare the array
$c['cronjobs'] = array( // populate the array
    'id'=>1189515,
    'groupId'=>12379,
);
$json = json_encode($c); // json_encode it
echo $json;
不需要$c=array$c['cronjob'];这正是您所做的。

在JSON中有一个名称:值对系统

{ 名字:约翰, 姓:史密斯, 伊莎莉:没错, 年龄:25岁, 地址:{ 街道地址:第二街21号, 城市:纽约, 州:纽约, 邮政编码:10021-3100 }, 电话号码:[ { 类型:home,, 电话:212 555-1234 }, { 类型:办公室, 电话:646555-4567 } ], 儿童:[], 配偶:无效
} 我想这就是你想要的:

$c = array('cronjobs' => array());

$c['cronjobs'][] = array('id' => 1189515, 'groupId' => 12379);
//$c['cronjobs'][] = array('id' => 1234, 'groupId' => 4321);

$json = json_encode($c);
echo $json;
Cronjobs需要包含cronjob对象/数组的数组

也可以使用一条语句编写,如下所示:

$c = array('cronjobs' => array(
    array('id' => 1189515, 'groupId' => 12379),
    array('id' => 1234, 'groupId' => 4321)
));

这应该会得到您想要的结果,只需在id groupId数组周围包装一个数组:

<?php
     $c = array();
     $c['cronjobs'] = array(array(
         'id'=>1189515,
         'groupId'=>12379,
     ));

     echo json_encode($c);
     // result {"cronjobs":[{"id":1189515,"groupId":12379}]}
?>

您的问题是,PHP数组用于表示JSON对象和JSON列表,因此混淆。请考虑下面的代码:

$cronjob = array(
    'id' => 1189515,
    'groupId' => 12379
);
echo json_encode($cronjob);
// {"id":1189515,"groupID":12379"}
如您所见,这表示单个对象。因此,我们将创建一个对象列表:

$cronjobs = array($cronjob);
echo json_encode($cronjobs);
// [{"id":1189515,"groupID":12379"}]
这现在是预期的列表。现在父对象:

$c = array(
    'cronjobs' => $cronjobs
);
echo json_encode($c);
// {"cronjobs":[{"id":1189515,"groupID":12379"}]}

嗨,我没有得到方括号-[{id:1189515,groupId:12379}]@xltmt:你是什么意思?嗨,当我尝试你的代码时,我得到了{cronjobs:{id:1189515,groupId:12379}}我需要去掉**[**{cronjobs:{id:1189515,groupId:12379}**]}。有两个方括号[]在两个输出之间。它们在星号**@xltmt之间:您放错了括号。这不是有效的JSON。我根据您的建议格式化了我的代码。我以前从未使用过JSON,所以我不确定我做错了什么。