下面列出了怎么用com.fasterxml.jackson.databind.deser.std.FromStringDeserializer的API类实例代码及写法,或者点击链接到github查看源代码。
private static ObjectMapper addCustomModules(ObjectMapper mapper, boolean intern) {
// with this mixin UnconfiguredTargetNode properties are flattened with
// UnconfiguredTargetNodeWithDeps
// properties
// for prettier view. It only works for non-typed serialization.
mapper.addMixIn(
UnconfiguredTargetNodeWithDeps.class,
UnconfiguredTargetNodeWithDeps.UnconfiguredTargetNodeWithDepsUnwrappedMixin.class);
// Serialize and deserialize UnconfiguredBuildTarget as string
SimpleModule buildTargetModule = new SimpleModule("BuildTarget");
buildTargetModule.addSerializer(UnconfiguredBuildTarget.class, new ToStringSerializer());
buildTargetModule.addDeserializer(
UnconfiguredBuildTarget.class,
new FromStringDeserializer<UnconfiguredBuildTarget>(UnconfiguredBuildTarget.class) {
@Override
protected UnconfiguredBuildTarget _deserialize(
String value, DeserializationContext ctxt) {
return UnconfiguredBuildTargetParser.parse(value, intern);
}
});
mapper.registerModule(buildTargetModule);
mapper.registerModule(forwardRelativePathModule());
return mapper;
}
private static SimpleModule forwardRelativePathModule() {
SimpleModule module = new SimpleModule();
module.addSerializer(ForwardRelativePath.class, new ToStringSerializer());
module.addDeserializer(
ForwardRelativePath.class,
new FromStringDeserializer<ForwardRelativePath>(ForwardRelativePath.class) {
@Override
protected ForwardRelativePath _deserialize(String value, DeserializationContext ctxt)
throws IOException {
return ForwardRelativePath.of(value);
}
@Override
protected ForwardRelativePath _deserializeFromEmptyString() throws IOException {
return ForwardRelativePath.EMPTY;
}
});
return module;
}
public InetJsonModule() {
super(InetJsonModule.class.getSimpleName(), new Version(1, 0, 0, null, null, null));
addSerializer(InetSocketAddress.class, ToStringSerializer.instance);
addDeserializer(InetSocketAddress.class, new FromStringDeserializer<InetSocketAddress>(InetSocketAddress.class) {
private static final long serialVersionUID = 1L;
@Override
protected InetSocketAddress _deserialize(String value, DeserializationContext ctxt) {
return InetSocketAddressConverter.getInetSocketAddress(value);
}
});
}
public TerracottaJsonModule() {
super(TerracottaJsonModule.class.getSimpleName(), new Version(1, 0, 0, null, null, null));
addSerializer(Path.class, ToStringSerializer.instance);
addDeserializer(Path.class, new FromStringDeserializer<Path>(Path.class) {
private static final long serialVersionUID = 1L;
@Override
protected Path _deserialize(String value, DeserializationContext ctxt) {
return Paths.get(value);
}
});
}