gpt4 book ai didi

安卓 : Jackson with ActiveAndroid

转载 作者:行者123 更新时间:2023-11-30 04:39:27 26 4
gpt4 key购买 nike

ActiveAndroid 有一个约束,它的所有实体都需要从某个基类继承,并且需要有一个以上下文(来自 Activity )作为输入的单参数构造函数。 [不喜欢这种限制]。

使用 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 实现自定义反序列化器。

除了必须为 jackson 编写自定义反序列化程序之外,还有其他选择吗?或者这是我使用特定的单参数构造函数的唯一选择吗?

如果有其他选择,请告诉我。

谢谢

最佳答案

一种替代方法是应用混合注释(参见 wikithis blog post)以添加 @JsonCreator 以指定要使用此特定构造函数。这需要“上下文”来自 JSON(可以在构造函数参数上使用 @JsonProperty 指定 JSON 中的名称);或者可以传入 null(如果未从 JSON 中找到此类字段,则会发生这种情况)。如果需要传递实际的外部上下文对象,则可以使用自定义反序列化器(直到实现“外部值注入(inject)”;这已计划但尚未添加)。

关于安卓 : Jackson with ActiveAndroid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6257002/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com