- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
@JsonAdapter(WatusiTypeAdapter.class)
@Expose(serialize = false, deserialize = true)
private Watusi watusi;
如果存在 TypeAdapter
,则 Expose
注释似乎会被忽略。 WatusiTypeAdapter
的write
方法仍然被调用,但是@Expose(serialize = true)
意味着它不应该被调用。也许这个想法是您应该将该决定委托(delegate)给 TypeAdapter
,但这会大大降低类型适配器的可重用性。
这是预期的行为还是错误?
最佳答案
This annotation has no effect unless you build
com.google.gson.Gson
with acom.google.gson.GsonBuilder
and invokecom.google.gson.GsonBuilder.excludeFieldsWithoutExposeAnnotation()
method.
举个例子
public class Example {
public static void main(String[] args) {
Example example = new Example();
example.other = new Other();
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
System.out.println(gson.toJson(example));
}
@JsonAdapter(value = OtherAdapter.class)
@Expose(serialize = true)
private Other other;
}
class Other {
}
class OtherAdapter extends TypeAdapter<Other> {
@Override
public void write(JsonWriter out, Other value) throws IOException {
System.out.println("hey");
out.endObject();
}
@Override
public Other read(JsonReader in) throws IOException {
// TODO Auto-generated method stub
return null;
}
}
这会产生
{}
换句话说,write
没有被调用。
这意味着您要公开的所有字段都必须使用 @Expose
进行注释。
关于java - Gson TypeAdapter的write方法即使设置字段不使用Expose序列化依然会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32469128/
我正在尝试使用 gson 将 json 对象转换为字符串。下面是代码 List studs = //from db int count = studs.size();
我是 json 和 gson 的新手。我有个问题。我有一个父类和一个扩展它的子类。我有一个父类列表。有些是 child 类的。当我使用 gson api toJson() 时,我只获取父类中定义的字段
我遇到了问题,App Engine 将 Long/long 值返回为“String”。这是返回的 JSON 文件的一部分: "stringObject" : "This is a string."
我目前正在实现 Hive在我的 FlutterApp 中。不幸的是,这个错误一直弹出: HiveError: There is already a TypeAdapter for typeId 100
我正在使用 Gson 2.4。 Gson 有一个标志是 null 值应该被序列化还是省略(默认)。当我从省略空值的 Gson 创建一个 TypeAdapter 并通过 TypeAdapter 序列化一
我有一个如下所示的 json 字符串: { "SomeStringProperty": { "value":"StringValue"}, "SomeIntProperty": { "value"
我正在尝试序列化一个类,其中一个成员带有自己的 JSON 序列化实现。我不知道如何将它包含在其余属性中。例如 class Foo { String fieldA; String fie
GSON 似乎在使用某种技巧,它查看我的 JavaBeans 的内部字段,而不是使用可公开访问的属性信息。不幸的是,这对我们来说是行不通的,因为我们神奇地创建的 bean 充满了我不希望它存储的私有(
是否有可能实现以下两个目标? 能够委托(delegate)给调用我们的自定义实现的默认 Gson 反序列化器。 不受 JSON 对象中键的不同顺序的影响 下面我描述了两种可能的方法,但只能实现其中一种
我有一个工作代码,其中我的改造客户端可以从 api 检索对象列表(国家/地区)。问题是,如果我曾经检索所有国家,那么 api 使用的参数返回一个 ARRAY,然后当我想查询一个国家时它返回一个 OBJ
我为包含枚举属性的类编写了一个TypeAdapter。这是 write 方法,它对枚举值使用标准 GSON 序列化: @Override public void write(JsonW
我正在尝试用 Kotlin 语言为我的 android 项目实现一些特定的 GSON TypeAdapter。 我面临的问题是无法推断类型的编译错误:Type inference failed: 'T
我想像这样通过 TypeAdapter 模拟一个传递给 Gson 的对象: @RunWith(MockitoJUnitRunner.class) public class SceneExporterT
因此,我正在尝试使用 Gson 和 Retrofit 解决我的自定义 TypeAdapter 遇到的问题。我一直收到 Expected BEGIN_OBJECT but was STRING 错误,但
让我们从分享工作和可复制代码开始(需要谷歌gson包): package mypackage; import com.google.gson.Gson; import com.google.gson.
我很难找到与此特定场景相关的任何内容 我配置了 Spring Boot,并且在其中使用响应式(Reactive) WebClient 来使用 REST Api。我已将其配置为使用 gson,但想知道如
我正在尝试为我正在使用的 JavaFX 类型(不同的属性和可观察值)编写一个 TypeAdapterFactory。对于 ObjectProperty,我可以编写一个 JsonSerializer/D
我见过很多使用自定义 TypeAdapter 的简单示例。最有帮助的是 Class TypeAdapter .但这还没有回答我的问题。 我想自定义对象中单个字段的序列化,并让默认的 Gson 机制处理
我有一个名为游戏的类: public class Game { private String name; private int id; private GameFields[
我正在 Flutter 中学习 Hive db。当我使用 Flutter 包时 pub run build_runner build命令它在其中生成 data.g.dart 文件它有一个错误。 完整的
我是一名优秀的程序员,十分优秀!