0

こんにちはみんな私は問題を抱えています。いくつかのコードを実装しているときに、各オブジェクトで 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;

    }

しかし、新しいプロパティを追加するたびに戻りたくありません

これがうまくいかない理由について何か考えがあれば感謝します

4

2 に答える 2

1

JSON にエンコードする前に、オブジェクトのプロパティを配列に変換する必要があります。

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

ご覧のとおり、 get_object_varsを使用してそれを実現できます。

于 2013-10-06T15:08:28.227 に答える
1

この使用法は、プリミティブ、配列、関連配列、およびオブジェクトで機能します。

<?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();

?>

実行すると、予期される JSON 出力が得られます。

$ php test.php 
{"a":"1","b":[3,5,"cat","monkey"],"c":{"animal":"dromedary"},"d":{"a":"1","b":[3,5,"cat","monkey"],"c": {"animal":"dromedary"}}}

私はまだPHP 5.3.15を実行しています。

于 2013-10-06T15:11:53.540 に答える