私はとで遊んでい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か?これはどういう意味ですか?