2016-09-07 8 views
0

少し問題があります。 jsonファイルにいくつかのデータを保存しましたが、正常に動作します。 しかし、このデータを取得しようとすると、作成しようとしているオブジェクトのインタフェースに問題があります。 これは私のクラスの簡易版GSON InstanceCreator設定データ

public class MyObject{ 

//this is a interface 
public Vector3Int position; 
...} 

OKですが、GSONはconsturctorなしのインタフェースを作成することはできませんので、私は、このクラスの作成:

public class VectorInstanceCreator implements InstanceCreator<Vector3Int >{ 

    @Override 
    public Vector3Int createInstance(Type arg0) { 
     return new VectorImpl(); 
    } 

} 

を、私はこの方法でそれを使用します。

... 
    GsonBuilder gsonBuilder = new GsonBuilder(); 
    gsonBuilder.registerTypeAdapter(Vector3Int.class, new new VectorInstanceCreator()); 
    Gson gson = gsonBuilder.create(); 
    gson.fromJson(myJsonString, MyObject.class); 
    ... 

だから、それは動作しますが、私のJSONファイル内の値は、たとえば次のとおりです。

"position": {"x": 1.0, "y": 1.0,"z": 0.0} 

ですが、Java-Object-Vectorの各値は0です。つまり、gsonはVectorInstanceCreatorクラスの指定コンストラクタを使用しますが、JSON-File/Objectの値は設定しません。

InstanceCreatorでインターフェイスを使用してこの値を設定するにはどうすればよいですか?

答えて

0

私の問題では、http://technology.finra.org/code/serialize-deserialize-interfaces-in-java.htmlの簡単な解決策が見つかりました。テンプレートInterfaceAdapterでは、各クラス名がjsonファイルに追加保存されます。したがって、検索メソッドは、クラスを復元​​するために、インターフェイスだけでなく正確なクラスを知っています。これは私のためにうまくいく。