下面列出了怎么用com.fasterxml.jackson.databind.JsonSerializable的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public boolean isEmpty(SerializerProvider serializers, JsonSerializable value) {
if (value instanceof JsonSerializable.Base) {
return ((JsonSerializable.Base) value).isEmpty(serializers);
}
return false;
}
@Override
public void serialize(JsonGenerator gen, SerializerProvider serializers) throws IOException
{
if (_value instanceof JsonSerializable) {
((JsonSerializable) _value).serialize(gen, serializers);
} else {
_serialize(gen);
}
}
@Override
public void serializeWithType(JsonGenerator gen, SerializerProvider serializers,
TypeSerializer typeSer) throws IOException
{
if (_value instanceof JsonSerializable) {
((JsonSerializable) _value).serializeWithType(gen, serializers, typeSer);
} else if (_value instanceof SerializableString) {
/* Since these are not really to be deserialized (with or without type info),
* just re-route as regular write, which will create one... hopefully it works
*/
serialize(gen, serializers);
}
}
public void serialize(JsonGenerator gen) throws IOException
{
if (_value instanceof JsonSerializable) {
// No SerializerProvider passed, must go via generator, callback
gen.writeObject(_value);
} else {
_serialize(gen);
}
}
@Override
public final void serialize(JsonGenerator gen, SerializerProvider serializers) throws IOException
{
if (_value == null) {
serializers.defaultSerializeNull(gen);
} else if (_value instanceof JsonSerializable) {
((JsonSerializable) _value).serialize(gen, serializers);
} else {
gen.writeObject(_value);
}
}
@Test
public void jsonSerializableResponseView() throws Exception {
ModelResponse<? extends Sushi> response = Bastion.request(FileRequest.post("http://localhost:9876/sushi",
"classpath:/json/create_sushi_request.json"))
.bind(Sushi.class)
.call()
.getResponse();
Optional<JsonSerializable.Base> node = response.getView(JsonSerializable.Base.class);
assertThat(node).isNotEmpty();
}
@Override
public void serialize(JsonSerializable value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
value.serialize(gen, serializers);
}
@Override
public final void serializeWithType(JsonSerializable value, JsonGenerator gen, SerializerProvider serializers,
TypeSerializer typeSer) throws IOException {
value.serializeWithType(gen, serializers, typeSer);
}
public RawValue(JsonSerializable v) {
_value = v;
}
protected SerializableSerializer() { super(JsonSerializable.class); }