对象转换为php中的json

对象转换为php中的json,php,arrays,json,Php,Arrays,Json,嗨,伙计们,我有个问题。 当我实现一些代码时,我达到了需要在每个对象中使用toJson方法的地步 因此,在类中,我添加了以下代码 public function toJson(){ return json_encode($this); // $this which refers to the current object } 它只返回了{},所以我知道它不能识别这个类的属性 所以我试着把它转换成那样 public function toJson(){ $array=(arra

嗨,伙计们,我有个问题。 当我实现一些代码时,我达到了需要在每个对象中使用toJson方法的地步

因此,在类中,我添加了以下代码

public function toJson(){
   return json_encode($this);  // $this which refers to the current object 

}
它只返回了
{}
,所以我知道它不能识别这个类的属性 所以我试着把它转换成那样

public function toJson(){
   $array=(array)$this;
   return json_encode($array);

}
我得到了奇怪的结果

string '{"\u0000Response\u0000status":0,"\u0000Response\u0000data":null,"\u0000Response\u0000error":" type non valide "}' (length=112)
我最终可以编写定制的json对象

像这样

 public function toJson(){
       $myjson="{field1:data1,field2:data2}";
       return $myjson;

    }
但我不想每次添加新属性时都返回到它


如果您知道为什么转换不起作用,我将不胜感激

在编码为JSON之前,您需要将对象属性转换为数组:

public function toJson(){
   return json_encode(get_object_vars($this));
}

如您所见,您可以使用来完成此任务。

此用法适用于基本体、数组、关联数组和对象:

<?php

class Test {
  var $a = "1";
  var $b = array(3, 5, "cat", "monkey");
  var $c = array("animal" => "dromedary");
  public function toJson() {
    return json_encode($this);
  }
}

$test = new Test();
$test->d = new Test();
echo $test->toJson();

?>

我仍然在运行PHP5.3.15。

一定会喜欢PHP的名称空间概念…:-)您到底想返回什么JSON格式?对象的属性?@Jeffrey yep,但没有被空字符弄乱,我假设是的,我试图直接从名为toJson的方法返回整个json格式的对象,确切地说是JavaString。我在第二个示例(数组)中进行了显式转换。$this一个家伙走进医生的办公室说,“医生,如果我在这里戳自己,会很痛。”. 医生回答说:“那就不要那样做。”。我的意思是,不要在更复杂的物体上使用这种方法。这适用于简单的模型对象(如java世界中的Bean)。对我来说,它不起作用,但当我使用json get_object_vars时,它起作用了,我不知道为什么会感兴趣。您使用的是什么PHP版本?($php--version)是的,这就是我认为的PHP5.3.4,我在WindowsXP中运行wamp服务器
$ php test.php 
{"a":"1","b":[3,5,"cat","monkey"],"c":{"animal":"dromedary"},"d":{"a":"1","b":[3,5,"cat","monkey"],"c": {"animal":"dromedary"}}}