首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在php中转换json中的对象数组

无法在php中转换json中的对象数组
EN

Stack Overflow用户
提问于 2015-02-17 13:16:17
回答 3查看 666关注 0票数 0

Bean.php

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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);

产出:

代码语言:javascript
运行
复制
[{},{},{}]

它不是将数组转换为json。我创建了一个Bean类,它包含两个参数,然后在其他文件中创建了bean类的三个对象,然后将其存储在一个数组中。当我试图在JOSN中对它进行编码时,它给了我三个空的json数组。请告诉我我做错了什么……

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-17 13:28:55

使用像这样的getter来创建数组并返回,因为您将无法使用私有属性。

代码语言:javascript
运行
复制
$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);
票数 0
EN

Stack Overflow用户

发布于 2015-02-17 13:21:17

这些房产是私有的。您需要使用bean->getName方法将它们包含在json中。或者让他们公开

票数 0
EN

Stack Overflow用户

发布于 2015-02-17 13:22:01

标头只表示内容编码的内容。不一定能够从内容本身推断出内容的类型,也就是说,您不一定只看内容并知道如何处理它。这就是HTTP报头的目的,它们告诉接收者他们(据推测)处理的是哪种内容。

Content-type: application/json; charset=utf-8将内容指定为JSON格式,以UTF-8字符编码方式编码.指定编码对于JSON来说有点多余,因为默认的(仅?)JSON的编码是UTF-8。因此,在这种情况下,接收服务器显然很高兴知道它处理的是JSON,并且假设编码默认为UTF-8,这就是为什么它使用或不使用报头。

代码语言:javascript
运行
复制
 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;
}

}
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28562439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档