1
ActiveAndroid有一個約束,它的所有實體都需要從某個基類繼承,並且需要一個參數構造函數將上下文(來自活動)作爲輸入。 [不是這個約束的粉絲]。Android:與ActiveAndroid的傑克遜
使用gson,我可以創建一個類型適配器來解決這個約束。
public class PolicyInstanceCreator implements InstanceCreator<Policy>{
private Context context;
public PolicyInstanceCreator(Context context) {
this.context = context;
}
@Override
public Policy createInstance(Type type) {
return new Policy(context);
}
}
Gson gson = new GsonBuilder().registerTypeAdapter(Policy.class, new PolicyInstanceCreator(context)).create();
Policy[] policies = gson.fromJson(myString, Policy[].class);
一種可能性似乎是我們需要用Jackson來實現一個自定義的desearlizer。
是否有任何替代方案必須爲傑克遜編寫自定義反序列化程序,或者是唯一的選項與特定的一個參數構造函數?
請讓我知道是否有任何其他選擇。
感謝
上下文就是活動本身。我對Java並不熟悉,但看着帖子我不確定Active Android想要做什麼。我真的不喜歡ActiveAndroi強加的繼承,這是這個問題的根源。可能不得不關閉ORM。與傑克遜相比,gson的速度更慢,因此可以選擇,否則gson有一個優雅的解決方案來處理實例化。 – 2011-06-07 00:08:36
是的,班級的設計肯定是錯誤的,在一個老式的比較錯誤的方式。 :-) ...至於實例化,也許傑克遜確實需要一種方法來註冊實例化器;如果通常需要添加,應該是微不足道的。 – StaxMan 2011-06-07 05:47:52
那會很好。你參與了這個項目嗎? – 2011-06-07 13:15:25