互联网上的多个帖子指向杰克逊,因为它具有比GSON更好的解析性能,在接近20-30%的速度提升的地方.
拉出我们的GSON解析器并替换为Jackson导致我的项目减速7倍,每次调用的延迟超过300毫秒.GSON上的相同解析工作不到50毫秒.
我浏览了杰克逊维基上的"陷阱"清单,但没有任何东西像红旗那样突出.
例如,我没有重新创建我的ObjectMapper,我正在使用ObjectReader读取所有JSON.以下是一些示例代码:
public class JsonParser {
@Nonnull
private final ObjectMapper objectMapper;
public JsonParser() {
final ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(DateFormatUtil.getGmtIso8601DateFormat());
SimpleModule simpleModule = new SimpleModule();
objectMapper.registerModule(simpleModule);
this.objectMapper = objectMapper;
}
public <T> T fromJson(InputStream inputStream, Class<T> clazz) throws IOException {
ObjectReader reader = objectMapper.reader(clazz);
return reader.readValue(inputStream);
}
}
Run Code Online (Sandbox Code Playgroud)
上面的对象被创建一次,并在应用程序的持续时间内用于将JSON转换为POJO.这里可以看到样本POJO:
@JsonSerialize(include= Inclusion.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class ActivityEntity {
public ActivityObjectEntity actor;
public ActivityObjectEntity object;
public ActivityObjectEntity provider;
public ActivityObjectEntity …Run Code Online (Sandbox Code Playgroud)