私はとで遊んでいflexjson
ますGoogle Cloud Endpoints
。シリアル化する必要がある私のモデルは次のとおりです。
public class SampleModel {
Long id;
DateTime createdAt;
String message;
OtherModel other;
}
DateTimeObjectFactory
オブジェクトを作成する方法を見つけるために作成しましたDateTime
(argコンストラクターがない)。今、私はとについても質問がOtherModel
ありSampleModel
ます。
List
実際にのをシリアル化したいSampleModel
。だからここに私のコードがあります:
List<SampleModel> sampleList = new ArrayList<SampleModel>();
// ...
// adding some items to sampleList
// ...
String s = new JSONSerializer().deepSerialize(sampleList);
deepSerialize
シリアル化されていないフィールドを避けるために、今のところはそれを実行したいのですが、今のところは。
デシリアライズしたいときは、次のs
ようにします。
sampleList = new JSONDeserializer<List<SampleModel>>()
.use("other", OtherModel.class)
.use(DateTime.class, new DateTimeObjectFactory())
.deserialize(s);
ログで逆シリアル化されたオブジェクトを見ることができるので、その種の逆シリアル化ではすべてが問題ないと思います。しかし実際、その新しいアイテムからアイテムを取得したい場合sampleList
、エラーが発生します。
java.lang.ClassCastException: java.util.HashMap cannot be cast to com.test.games.testapi.model.SampleModel
私がよく理解していれば、重要なオブジェクトはすべてMap
、適切なクラスをデシリアライザーに向けていないかのようにデシリアライズされます。したがって、このエラーは、スクリプトが認識していなかったことを意味しますSampleModel
か?これはどういう意味ですか?