繁体   English   中英

如何反序列化Spring Boot执行器环境

[英]How to deserialize Spring Boot actuator environment

我想反序列化由以下方式返回的Spring Boot Environment对象:

HTTP://主机名:端口/致动器/ env的

我正在使用Jackson的ObjectMapper

private static final ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
...
ClientResponse clientResponse = resource.type(MediaType.APPLICATION_JSON).get(ClientResponse.class);
InputStream is = clientResponse.getEntityInputStream();

org.springframework.core.env.Environment e = mapper.readValue(is, org.springframework.core.env.Environment.class);

上面的代码失败,并显示以下错误,这是有道理的:

com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of org.springframework.core.env.Environment, problem: abstract types either need to be mapped to concrete types, have custom deserializer, or be instantiated with additional type information

但是我已经尝试了Environment类的所有实现( AbstractEnvironmentMockEnvironmentStandardEnvironmentStandardServletEnvironment ),并且它们都失败了。

我应该使用哪个班级?

org.springframework.core.env.Environment是一个接口。 因此, ObjectMapper无法猜测要实例化的具体类。 您需要告诉ObjectMapper使用哪个类。 所以在你的行org.springframework.core.env.Environment e = mapper.readValue(is,org.springframework.core.env.Environment.class); 您需要用一些具体的类替换org.springframework.core.env.Environment.class 例如org.springframework.core.env.StandardEnvironment (取决于实际返回的环境类型)。 否则,将其反序列化以映射:

Map<String, Object> map = mapper.readValue(is,HashMap<String, Object>.class);

然后从那里去

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM