![](/img/trans.png)
[英]The import com.fasterxml.jackson.databind.ObjectMapper cannot be resolved
[英]serialize interface fields using com.fasterxml.jackson.databind.ObjectMapper
在json结果中序列化? 如何在json结果中序列化或字段化接口。 我使用com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(obj)。
接口字段未显示在json结果中
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({
@Type(value = TranslateEN.class, name = "en"),
@Type(value = TranslatePT.class, name = "pt")
})
public interface ITranslate extends Serializable {
String app = "Anota Ai";
}
@XmlRootElement
public final class TranslatePT implements ITranslate {
private static final long serialVersionUID = 1L;
private static TranslatePT instance;
private TranslatePT() {
super();
}
static {
instance = new TranslatePT();
}
public static TranslatePT getInstance() {
return instance;
}
public final Message message = new Message();
public final Entidade entidade = new Entidade();
final static class Message {
public final String defultError = "Erro inesperado";
}
final static class Login {
public final String forbidden = "Sessão expirada, favor efetuar o login novamente.";
public final String confirmacaoSenha = "A senha não confere com a confirmação de senha. Informe novamente.";
}
final static class Entidade {
public final EntidadeDeletada editada = new EntidadeDeletada();
}
final static class EntidadeDeletada {
public final String sucesso = "{0} editada com sucesso.";
}
}
public class MessageSerialize {
@Test
public void loadHtmlFileTest() throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
TranslatePT instanceTranslate = TranslatePT.getInstance();
String dtoAsString = objectMapper.writeValueAsString(instanceTranslate);
Assert.assertNotNull(dtoAsString);
}
}
//result of serialization
{"type":"pt","message":{"defultError":"Erro inesperado"},"entidade":{"editada":{"sucesso":"{0} editada com sucesso."}}}
接口中的app
变量不是实例字段,而是一个常量。 接口中的字段隐式为public static final
。
常量与类相关联,它们不是实例的一部分。 Jackson仅将对象实例序列化为JSON,因此不会序列化静态变量。
正如Luciano所指出的那样,即使您使用适当的注释,静态字段也不会被Jackson序列化。 但是,Jackson默认情况下将调用其找到的所有getter方法,并将返回值与从getter名称派生的字段名称一起放入JSON。 因此,如果必须序列化静态字段app
只需将一个名为getApp
的getter方法getApp
类中,在本例中为TranslatePT
:
public String getApp() {
return app;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.