gpt4 book ai didi

java - 如何创建写入原始字符串的 GSON 自定义序列化程序?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:49:58 24 4
gpt4 key购买 nike

我有一个负载类,它已经能够将自身写入 JSON 格式的字符串。现在我想返回一个包含我的有效负载类数组的 JSON 对象。我正在使用 GSON 并想创建一个自定义类型适配器,它只需调用 payload.getAsJson() 并将该原始字符串写入 JsonWriter。不幸的是,这对我不起作用,因为字符串被转义了。

有什么想法吗?

最佳答案

适配器可能类似于下面的示例:

public class MyTypeAdapter extends TypeAdapter<MyPayload> {

// Just added this as a sample assuming you have a constructor that
// builds a Payload instance from a String
public MyPayload read(JsonReader reader) throws IOException {
if (reader.peek() == JsonToken.NULL) {
reader.nextNull();
return null;
}

String json = reader.nextString();
return new MyPayload(json);
}

// use value.getAsJson() for conversion
public void write(JsonWriter writer, MyPayload value) throws IOException {
if (value == null) {
writer.nullValue();
return;
}

String json = value.getAsJson();
writer.value(json);
}
}

假设您有合适的构造函数,它将 Json String 转换为 Payload 实例,反之亦然。如果不需要,在方法体中返回null即可。

这是你如何使用它:

GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(MyPayload.class, new MyTypeAdapter());
Gson gson = builder.create();

String jsonString = gson.toJson(somethingThatContainsMyPayloads);

干杯!

关于java - 如何创建写入原始字符串的 GSON 自定义序列化程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16574463/

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