Java 标准类是否可以有自定义的Jackson序列化程序?(例如列表<;列表<;字符串>;)
我正在尝试为类a的实例变量创建自定义序列化程序 问题在于变量是“标准”内置类型(Java 标准类是否可以有自定义的Jackson序列化程序?(例如列表<;列表<;字符串>;),java,jackson,Java,Jackson,我正在尝试为类a的实例变量创建自定义序列化程序 问题在于变量是“标准”内置类型(List) 我发现,理论上,您可以为要创建的类型创建自定义序列化程序;所以从理论上讲,如果我可以为列表创建一个自定义序列化程序,我就可以通过这种方式将它混合到类a中 但是如何为列表创建自定义序列化程序呢 我想可能是这样的。我不知道序列化时要使用的逻辑,所以我编写了简单的json数组[][] private static class ListListSerializer extends StdSerializer<
List
)
我发现,理论上,您可以为要创建的类型创建自定义序列化程序;所以从理论上讲,如果我可以为列表创建一个自定义序列化程序,我就可以通过这种方式将它混合到类a中
但是如何为列表
创建自定义序列化程序呢 我想可能是这样的。我不知道序列化时要使用的逻辑,所以我编写了简单的json数组[][]
private static class ListListSerializer extends StdSerializer<List<List<String>>>{
protected ListListSerializer(Class<List<List<String>>> t) {
super(t);
}
protected ListListSerializer(){
this(null);
}
@Override
public void serialize(List<List<String>> lists, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeStartArray();
for (List<String> strings : lists) {
jsonGenerator.writeStartArray();
for (String string : strings) {
jsonGenerator.writeString(string);
}
jsonGenerator.writeEndArray();
}
jsonGenerator.writeEndArray();
}
}
这就是你想做的吗?我想可能是这样的。我不知道序列化时要使用的逻辑,所以我编写了简单的json数组[][]
private static class ListListSerializer extends StdSerializer<List<List<String>>>{
protected ListListSerializer(Class<List<List<String>>> t) {
super(t);
}
protected ListListSerializer(){
this(null);
}
@Override
public void serialize(List<List<String>> lists, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeStartArray();
for (List<String> strings : lists) {
jsonGenerator.writeStartArray();
for (String string : strings) {
jsonGenerator.writeString(string);
}
jsonGenerator.writeEndArray();
}
jsonGenerator.writeEndArray();
}
}
这就是您想要做的吗?老实说,确切的序列化逻辑并不重要-我更困惑的是如何将序列化程序分配给内置类。不知何故,我没有意识到StdSerializer中的泛型不需要自定义类,可以接受任何类-现在我觉得很愚蠢:)没关系,我很高兴这有帮助:)确切的序列化逻辑并不重要,老实说-我更困惑于如何将序列化程序分配给内置类。不知何故,我没有意识到StdSerializer中的泛型不需要自定义类,可以接受任何类-现在我觉得很愚蠢:)没关系,我很高兴这有帮助:)
{"myStrings":[["a","b","c"],["d","f","g"]]}