I have a not annotated class Chunk and I want to get is serialized in Argonaut. I am therefore creating a Serde:
@Singleton
public class ChunkSerde implements Serde<Chunk> {
@Override
public void serialize(
Encoder encoder,
EncoderContext context,
Argument<? extends Chunk> type, Chunk chunk) throws IOException {
Objects.requireNonNull(chunk, "chunk cannot be null");
encoder = encoder.encodeObject(type);
encoder.encodeKey("id"); encoder.encodeString(hex(chunk.fingerprint()));
encoder.encodeKey("size"); encoder.encodeLong(chunk.size());
}
}
The controller should return a List:
@Controller("/store")
public class StoreController {
@Inject
ChunkStore store;
@Post("/get") @Produces(MediaType.APPLICATION_JSON)
public List<Chunk> get(@Body Set<String> ids) {
...
return store.get(bids);
...
}
I am however getting the following error:
Error encoding object [[Chunk[fingerprint=85cbb892316667c0e167658eebe053175a65ed160d39cfd9f0466e67e90769d2, size=5130], Chunk[fingerprint=4de0b3ebcb377be0ccc89d17332db637cbc8b4952970e35e621e654e2652d0f7, size=784]]] to JSON: Can not start an object, expecting field name (context: Object)
at io.micronaut.http.netty.body.NettyJsonHandler.writeTo(NettyJsonHandler.java:164)
at io.micronaut.http.server.netty.RoutingInBoundHandler.writeNettyMessageBody(RoutingInBoundHandler.java:367)
at io.micronaut.http.server.netty.RoutingInBoundHandler.encodeHttpResponse(RoutingInBoundHandler.java:346)
at io.micronaut.http.server.netty.RoutingInBoundHandler.writeResponse(RoutingInBoundHandler.java:240)
at io.micronaut.http.server.netty.NettyRequestLifecycle.handleNormal(NettyRequestLifecycle.java:92)
...
Caused by: com.fasterxml.jackson.core.JsonGenerationException: Can not start an object, expecting field name (context: Object)
at com.fasterxml.jackson.core.JsonGenerator._reportError(JsonGenerator.java:2858)
at com.fasterxml.jackson.core.json.JsonGeneratorImpl._reportCantWriteValueExpectName(JsonGeneratorImpl.java:292)
at com.fasterxml.jackson.core.json.UTF8JsonGenerator._verifyValueWrite(UTF8JsonGenerator.java:1184)
at com.fasterxml.jackson.core.json.UTF8JsonGenerator.writeStartObject(UTF8JsonGenerator.java:378)
at io.micronaut.serde.jackson.JacksonEncoder.encodeObject(JacksonEncoder.java:105)
Can anyone spot the issue?