Bean.php
class Bean {
private $ename = '';
private $fathername='';
function getEname() {
return $this->ename;
}
function getFathername() {
return $this->fathername;
}
function setEname($ename) {
$this->ename = $ename;
}
function setFathername($fathername) {
$this->fathername = $fathername;
}
}
test.php的
require 'Bean.php';
$finaldata = array();
$k = new Bean();
$k->setEname("Sahil Manchanda");
$k->setFathername("Pawan Kumar Manchadna");
$c = new Bean();
$c->setEname("Rahul Khurana");
$c->setFathername("Vijay Kumar Khurana");
$d = new Bean();
$d->setEname("Gourav Arora");
$d->setFathername("Mangat Rai Arora");
$finaldata[] = $k;
$finaldata[] = $c;
$finaldata[] = $d;
echo json_encode($finaldata);
输出:
[{},{},{}]
它没有将数组转换为json。我创建了一个包含两个参数的Bean类,然后在其他文件中创建了三个bean类对象,然后将它存储在一个数组中。当我试图在JOSN中编码时,它给了我三个空的json数组。请告诉我我做错了什么.....
答案 0 :(得分:0)
属性是私有的。您需要使用bean-> getName方法将它们包含在json中。或者公开
答案 1 :(得分:0)
使用这样的getter来制作数组并返回,因为你无法使用私有属性。
$finaldata[0]['name'] = $k->getEname();
$finaldata[0]['fathername'] = $k->getFathername();
$finaldata[1]['name'] = $c->getEname();
$finaldata[1]['fathername'] = $c->getFathername();
$finaldata[2]['name'] = $d->getEname();
$finaldata[2]['fathername'] = $d->getFathername();
json_encode($finaldata);
答案 2 :(得分:-2)
标题只表示内容的编码内容。不一定可以从内容本身推断内容的类型,即您不一定只看内容并知道如何处理它。这就是HTTP标头的用途,它们告诉收件人他们(应该)处理的是什么类型的内容。
Content-type: application/json; charset=utf-8
将内容指定为JSON格式,以UTF-8字符编码进行编码。对于JSON来说,指定编码有点多余,因为JSON的默认(仅?)编码是UTF-8。因此,在这种情况下,接收服务器显然很高兴知道它正在处理JSON并且假设默认情况下编码是UTF-8,这就是为什么它可以使用或不使用标头。
class Bean {
private $ename = '';
private $fathername='';
Public function getEname() {
return $this->ename;
}
Public function getFathername() {
return $this->fathername;
}
Public function setEname($ename) {
$this->ename = $ename;
}
Public function setFathername($fathername) {
$this->fathername = $fathername;
}
}