Hi, When trying the following code on Johnzon 1.1.12-SNAPSHOT:
public class UUIDSerializer implements JsonbSerializer<UUID> { public void serialize(UUID obj, JsonGenerator generator, SerializationContext ctx) { generator.flush(); System.out.println("!!!"); generator.write(obj.toString()); } } public class UUIDHolder { @JsonbTypeSerializer(UUIDSerializer.class) public UUID uuid = UUID.randomUUID(); } JsonbBuilder.create().toJson(new UUIDHolder(), System.out); I get the following printed on System.out: {"uuid":{!!! and an exception: javax.json.stream.JsonGenerationException: write(param) is only valid in arrays at org.apache.johnzon.core.JsonGeneratorImpl.checkArray(JsonGeneratorImpl.java:623) at org.apache.johnzon.core.JsonGeneratorImpl.write(JsonGeneratorImpl.java:384) at org.apache.johnzon.jsonb.SerializerTest$ConcreteSerializer.serialize(SerializerTest.java:249) at org.apache.johnzon.jsonb.SerializerTest$ConcreteSerializer.serialize(SerializerTest.java:1) at org.apache.johnzon.jsonb.JsonbAccessMode$WriterConverters.lambda$0(JsonbAccessMode.java:793) at org.apache.johnzon.mapper.MappingGeneratorImpl.writeValue(MappingGeneratorImpl.java:381) This looks kinda strange to me because, it seems that Johnzon tries to start a new object (hence the opening bracket in the output in front of the '!!!') before it passes control to the serializer. Why does Johnzon do that? The serializer could decide that the object could be stored as an object ({}), an array ([]) or a primitive value. Should I report an issue? Regards, Xavier