1

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

4

0 に答える 0