web-dev-qa-db-ja.com

Javaと同等のPHP var_dump?

PHPには、オブジェクトの内部コンテンツを出力する var_dump() 関数があり、オブジェクトのタイプとコンテンツを表示します。

例えば:

class Person {
  private $firstName;
  private $lastName;

  public function __construct($firstName, $lastName) {
    $this->firstName = $firstName;
    $this->lastName = $lastName;
  }
}

$person = new Person('Jon', 'Smith');
var_dump($person);

出力されます:

object(Person)#1 (2) {
  ["firstName:private"]=>
  string(3) "Jon"
  ["lastName:private"]=>
  string(5) "Smith"
}

Java同じことをするのに相当するものは何ですか?

118
Jon Cram

これはJavaの焼き付けほどではないので、これを無料で手に入れることはできません。言語構成ではなく、慣習で行われます。すべてのデータ転送クラス(およびおそらく作成するすべてのクラス...)でも、賢明な toString メソッドを実装する必要があります。そのため、ここでPersonクラスのtoString()をオーバーライドし、目的の状態を返す必要があります。

利用可能なユーティリティ があり、適切なtoStringメソッドの作成に役立ちます。または、ほとんどのIDEにはtoString()の自動書き込みショートカットがあります。

63
serg10

私の経験では、var_dumpは通常、ステップスルーデバッガーの代わりにPHPをデバッグするために使用されます。

29
Chase Seibert

代わりの方法は、オブジェクトのtoString()メソッドをオーバーライドして、その内容を好きな方法で出力するか、リフレクションを使用してオブジェクトを検査することです(デバッガーと同様の方法で)。

リフレクションを使用する利点は、個々のオブジェクトを「分析可能」に変更する必要がないことですが、複雑さが増し、ネストされたオブジェクトのサポートが必要な場合はそれを記述する必要があります。

このコードは、Object "o"のフィールドとその値をリストします

Field[] fields = o.getClass().getDeclaredFields();
for (int i=0; i<fields.length; i++)
{
    System.out.println(fields[i].getName() + " - " + fields[i].get(o));
}
18
Harry Lime

最善の方法は、google-gsonを使用することだと思います(A Javaライブラリを使用してJSONをJavaオブジェクトに、またはその逆に変換する)

ダウンロード それ、プロジェクトに「jar」ファイルを追加します

HashMap<String, String> map = new HashMap<String, String>();

map.put("key_1", "Baku");
map.put("key_2", "Azerbaijan");
map.put("key_3", "ALi Mamedov");

Gson gson = new Gson();

System.out.println(gson.toJson(map));

出力:

{"key_3":"ALi Mamedov","key_2":"Azerbaijan","key_1":"Baku"}

任意のオブジェクト(配列、リストなど)をJSONに変換できます。 PHPのvar_dump()の最高のアナログだと思います

14
Ali Mamedov

Apache commons langパッケージは、リフレクションを使用してデフォルトのtoString()メソッドを構築し、フィールドの値を取得するために使用できるクラスを提供します。 this をご覧ください。

7
reallyinsane

Jestr を使用して、妥当な結果を得ました。

4
brmiller

GSONは、私が取り組んでいるプロジェクトの種類に依存していることが多いため、GSONを使用するのが好きです。

public static String getDump(Object o) {
    return new GsonBuilder().setPrettyPrinting().create().toJson(o);
}

または、使用する他のJSONライブラリをGSONに置き換えます。

4
mattalxndr

オブジェクトをダンプするこのメソッドを見つけました、これを試してみてください String dump(Object object)

2
qmn1711

XMLシリアル化を行うと、深くネストされたオブジェクトでも非常にきれいな表現を取得できます。

0
Daniel

似たようなことは、見たいオブジェクトを印刷する簡単なメソッドを作成することだと思います。このようなもの:

public static void dd(Object obj) { System.out.println(obj); }

Var_dump()と同じではありませんが、デバッガIDEに移動することなく、一般的な概念を把握できます。

0
Necare