Java 类名称作为json字段 介绍
我需要将一个java对象(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
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()代码>但这不起作用
答复
重复问题中的答案对我有用。我得换衣服
myFahrwegeReeignismixin
对此:
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还支持自定义序列化程序,但由于需要编写大量不同的类,所以我不希望这样做。