如何从PHP发送JSON格式的对象数组

时间:2013-03-25 15:39:03

标签: php json

php新手。我试图将JSON数据发送到名称 - 值对的前端。我尝试了一个示例,我得到here以下是我的代码片段,它以JSON名称值格式发送数据。

while($stmt->fetch()){
    $list = array('id' => $fid, 'name' => $fname);
}
$stmt->free_result();
$stmt->close();
echo json_encode($list);

我在前端得到了这个

Object {id: 12, name: "Manisha"}

问题是我期待一组对象。以上值是从SQL查询获取的最后一个值。我应该对这段代码做些什么改动,以便我可以得到一个对象数组。像

这样的东西
[{"id":"1","name":"Kumari"}, {"id":"2","name":"KM"}, {"id":"3","name":"Manisha"}]

请建议。

6 个答案:

答案 0 :(得分:17)

$ list需要是一个数组,你只需将项目推送到它就像在这段代码中一样:

$list = array();
while($stmt->fetch()){
    $list[] = array('id' => $fid, 'name' => $fname);
}
$stmt->free_result();
$stmt->close();
echo json_encode($list);

您还可以使用方法fetch_all()一次获取所有行,而不是使用循环进行迭代。虽然在这个例子中你会得到你选择的所有字段,而不仅仅是id和name。

$list = $stmt->fetch_all();
$stmt->free_result();
$stmt->close();
echo json_encode($list);

答案 1 :(得分:3)

您应该尝试在数组末尾推送每个对象,例如使用array_push(相当于$array[] = $data添加到堆栈中,但会让您更具可读性)。

$list=array(); //instantiate the array 
while($stmt->fetch()){
    $data = new stdClass(); // create a new object
    $data->id=$fid;
    $data->name=$fname;
    array_push($list,$data); // push object to stack array
}
$stmt->free_result();
$stmt->close();
echo json_encode($list);

答案 2 :(得分:2)

您的列表数组仅存储1行。试试这个:

while ($stmt->fetch()) {
    $list[] = array('id' => $fid, 'name' => $fname);
}

希望这有帮助!

答案 3 :(得分:0)

看看这是否适合你:

$n = 0;
while($stmt->fetch()){
    $list[$n] = array('id' => $fid, 'name' => $fname);
    $n++;
}
$stmt->free_result();
$stmt->close();
echo json_encode($list);

您使用数组多次覆盖$list

答案 4 :(得分:0)

尝试创建一个对象数组

$list = array();
while($stmt->fetch()) {
    // create an object
    $datum=new stdClass();
    $datum->id=$fid;
    $datum->name=$fname;

    $list[] = $datum;
}
$stmt->free_result();
$stmt->close();
echo json_encode($list);

答案 5 :(得分:0)

假设我们有这个文件结构,里面没有特定的对象:

  {
    "Subjects" : []
  }



//Get your Json file and decode it 
$json = file_get_contents('CdStore/Pagetest.json');
$json_data = json_decode($json,true);

   //Specifiy your Objects like this
$NewArray= array( 'Mathematics' => array(),'Physics' => array());
  //Push the new Objects  
array_push($json_data['Pagess'],$NewArray); 
   //Then encode to json
$array = json_encode($json_data); 
  //If you want to get the preview before saving
print_r($array);  

 //Save your file
file_put_contents('CdStore/Pagetest.json', json_encode($json_data));

结果你有:

 {"Subjects":
     [
       {
        "Mathematics":[],

        "Physics":[]

         }
     ]

  }