我在一个项目中使用Unirest,这个项目对我来说很好。但是,我想发布一些数据,并且不想逃避所有的JSON,因为它看起来很难看,而且非常痛苦。
我找到了一些关于如何为Unirest配置ObjectMapper的链接,它给出了以下代码。
Unirest.setObjectMapper(new ObjectMapper() {
com.fasterxml.jackson.databind.ObjectMapper mapper =
new com.fasterxml.jackson.databind.ObjectMapper();
public String writeValue(Object value) {
try {
return mapper.writeValueAsString(value);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
public <T> T readValue(String value, Class<T> valueType) {
try {
return mapper.readValue(value, valueType);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
});但是,没有例子显示在Spring项目中最好这样做。
我试图在主类方法中设置它,但是我得到了一个'setObjectMapper‘无法解决的错误。我也试图在控制器中这样做,但是我得到了同样的错误。
我对这两个库的评分是:
// https://mvnrepository.com/artifact/com.mashape.unirest/unirest-java
compile group: 'com.mashape.unirest', name: 'unirest-java', version: '1.4.5'
compile 'com.fasterxml.jackson.core:jackson-databind:2.10.1'有谁能告诉我如何在Spring项目中使用带有Unirest的Jackson对象映射器,因为我已经谷歌和阅读文档两天了。会很感激你的帮助。
提前谢谢你
发布于 2019-11-19 15:17:54
您在这里有几个问题:
1.4.5)不包含配置对象映射程序的特性。这个特性是后来添加的(github PR)。因此,您应该更新到maven central - 1.4.9提供的最新版本。这本身将解决您的编译问题。ObjectMapper(),而是spring上下文中的一个,那么最好创建一个类似假spring的东西来注入ObjectMapper:@Configuration
public class UnirestConfig {
@Autowired
private com.fasterxml.jackson.databind.ObjectMapper mapper;
@PostConstruct
public void postConstruct() {
Unirest.setObjectMapper(new ObjectMapper() {
public String writeValue(Object value) {
try {
return mapper.writeValueAsString(value);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
public <T> T readValue(String value, Class<T> valueType) {
try {
return mapper.readValue(value, valueType);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
});
}
}除此之外,这个库还更改了包名。现在是com.konghq。您可能想考虑更新,但是库API可能已经改变了。
Upd:最新版本
compile group: 'com.konghq', name: 'unirest-java', version: '3.1.04'新的API是Unirest.config().setObjectMapper(...)
https://stackoverflow.com/questions/58936138
复制相似问题