0

Java オブジェクトを json との間でシリアライズ/デシリアライズしたい。google gson が望ましいです。クラスAを持ってみましょう:

クラスA {
  int x = 1;
  int y = 2;
}

次に、 new Gson().toJson(new A()) を呼び出すと、次のようになります。

{ x: 1, y : 2}. 

しかし、私は持っていたい

{クラス: "A", x:1, y:2}

したがって、コンパイル時にクラス名を知らなくても、リフレクションを使用してデシリアライズできます。どうすればいいですか?ありがとうございました。

4

2 に答える 2

0

Gsonの使用が望ましい、または必要な場合{class:"A", x:1, y:2}は、構造のJavaインスタンスから構造のJSONを生成する方法に固有であり、class A {int x = 1; int y = 2;}現在、カスタムシリアル化を実装する必要があります。同様に、このJSONからこのJava構造にデシリアライズするには、カスタムデシリアライズを実装する必要があります。

このような「手動」処理の代わりに、GsonはまもなくRuntimeTypeAdapterより単純なポリモーフィックな逆シリアル化に利用できるようになることに注意してください。詳細については、 http://code.google.com/p/google-gson/issues/detail?id=231を参照してください。を使用できない場合でもRuntimeTypeAdapter、少なくとも構成可能なカスタムデシリアライザーを作成するための例を提供します。

JSONマッピングAPIを切り替えることができる場合は、Jacksonを検討することをお勧めします。これは、機能し、比較的単純なポリモーフィックデシリアライザーメカニズムが利用できるためです。いくつかの簡単な例をhttp://programmerbruce.blogspot.com/2011/05/deserialize-json-with-jackson-into.htmlに投稿しました。

于 2011-06-15T20:44:03.263 に答える
0

2 番目の例は JSON ではありません。インスタンスの状態や特定のクラスなどを維持するものが必要な場合は、YAML をチェックしてください

http://www.yaml.org/

于 2010-12-25T01:27:14.683 に答える