Java 类名称作为json字段 介绍

Java 类名称作为json字段 介绍,java,json,jackson,Java,Json,Jackson,我需要将一个java对象(Fahrweg)序列化为json,该对象包含嵌套对象(所有对象都实现了接口fahrwegewiis)。 我的代码如下所示: Fahrweg fahrweg = new Fahrweg(); ObjectMapper mapper = new ObjectMapper(); mapper.addMixIn(FahrwegEreignis.class, FahrwegEreignisMixIn.class); ObjectWriter ow = mapper.writ

我需要将一个java对象(
Fahrweg
)序列化为json,该对象包含嵌套对象(所有对象都实现了接口
fahrwegewiis
)。 我的代码如下所示:

Fahrweg fahrweg = new Fahrweg();

ObjectMapper mapper = new ObjectMapper();

mapper.addMixIn(FahrwegEreignis.class, FahrwegEreignisMixIn.class);

ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();

try {
  String json = ow.writeValueAsString(fahrweg);
  System.out.print(json);
} catch (JsonProcessingException e) {
  e.printStackTrace();
}
默认情况下,生成的json中不包含对象的类型(我假设JS是动态类型的)

我想为每个对象添加一个字段,比如:
“type”:“classname”

我读过关于Jackson注释的文章,我使用mixin是因为我不能修改有问题的类。我的mixin接口(
FahrwegeReeignisMixin
)如下所示:

import com.fasterxml.jackson.annotation.JsonProperty;

public interface FahrwegEreignisMixIn {
    @JsonProperty("type")
    //TODO
}
问题: 我需要在
//TODO
上写什么

我的第一反应是
Class getClass()但这不起作用

答复 重复问题中的答案对我有用。我得换衣服 my
FahrwegeReeignismixin
对此:

import com.fasterxml.jackson.annotation.JsonTypeInfo;

@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "type")
public interface FahrwegEreignisMixIn {}
你考虑过使用吗?对我来说很有魅力

您的代码可能如下所示:

FahrwegEreignis fahrweg = new Fahrweg();
Gson gson = new Gson();
String json = gson.toJson(fahrweg);

可以在实现接口的类的实例上运行以下操作:

FahrwegEreignisMixInImpl.getClass().getName()

我会试试这个,谢谢“很有魅力”是的,但它也不包含类名,对吗?如果我correct@KoenVEJackson还支持自定义序列化程序,但由于需要编写大量不同的类,所以我不希望这样做。