无法将类型ID“我的类”解析为com.fasterxml.jackson.databind.JsonNode`的子类型:不是子类型

时间:2020-06-14 00:10:56

标签: java json jackson json-deserialization

所以我正在使用json jackson序列化和反序列化数据对象。我有2个类扩展了StdDeserializer<UserData>StdSerializer<UserData>。我将对象序列化为:

    @Override
    public void serialize(UserData userData, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        jsonGenerator.writeStringField("uuid", userData.getName());
        jsonGenerator.writeStringField("rank", userData.getRank() == null ? "None" : userData.getRank().getName());
        jsonGenerator.writeStringField("subrank", userData.getSubrank() == null ? "None" : userData.getSubrank().getName());
        jsonGenerator.writeNumberField("coins", userData.getCoins());
    }

    @Override
    public void serializeWithType(UserData value, JsonGenerator gen, SerializerProvider serializers, TypeSerializer typeSer) throws IOException {
        typeSer.writeTypePrefix(gen, typeSer.typeId(value, JsonToken.START_OBJECT));
        serialize(value, gen, serializers);
        typeSer.writeTypeSuffix(gen, typeSer.typeId(value, JsonToken.END_OBJECT));
    }

并反序列化为:

    @Override
    public UserData deserializeWithType(JsonParser p, DeserializationContext ctxt, TypeDeserializer typeDeserializer) throws IOException {
        return deserialize(p, ctxt);
    }

    @Override
    public UserData deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
        JsonNode node = jsonParser.getCodec().readTree(jsonParser);
        UUID uuid = UUID.fromString(node.get("uuid").asText());
        String name = node.get("name").asText();
        Rank rank = null;
        Rank subrank = null;
        long coins = node.get("coins").longValue();
        return new CoreUserData(uuid, name, rank, subrank, coins);
    }

但是当我尝试那样做时,我得到一个错误提示

Caused by: com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Could not resolve type id 'net.simonm.core.common.user.data.CoreUserData' as a subtype of `com.fasterxml.jackson.databind.JsonNode`: Not a subtype
 at [Source: (io.netty.buffer.ByteBufInputStream); line: 1, column: 11]

我该如何解决?

**仍然没有弄清楚

0 个答案:

没有答案