对象转换为php中的json
嗨,伙计们,我有个问题。 当我实现一些代码时,我达到了需要在每个对象中使用toJson方法的地步 因此,在类中,我添加了以下代码对象转换为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
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"}}}