繁体   English   中英

如何使用 jackson 将字符串值反序列化为列表

[英]how to deserialize string value to List using jackson

有一个 json 这样的文本

{"name":"g1","users":"[{\"name\":\"u1\",\"id\":1},{\"name\":\"u2\",\"id\":2}]"}

如何将此文本反序列化为 object? 我的结构 class 是这样的

static class User {
    private String name;
    private Long id;
}
static class Group {
    private String name;
    private List<User> users;
}

但是如何将文本反序列化为 object

ObjectMapper objectMapper = new ObjectMapper();
Group group = objectMapper.readValue(s, Group.class);

我正在尝试像这样导入 JsonDeserializer。

public class RawJsonDeserializer<T> extends JsonDeserializer<T> implements ContextualDeserializer {
    private final JavaType type;

    public RawJsonDeserializer() {
        this.type = SimpleType.constructUnsafe(Object.class);
    }

    public RawJsonDeserializer(JavaType type) {
        this.type = type;
    }

    @Override
    public JsonDeserializer<?> createContextual(DeserializationContext ctxt, BeanProperty property) throws JsonMappingException {
        System.out.println(property.getType());
        return new RawJsonDeserializer<>(property.getType());
    }

    @Override
    public T deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        return ((ObjectMapper) p.getCodec()).readValue(p.getText(), type);
    }
}

我把它应用在我的财产上

 @JsonDeserialize(using = RawJsonDeserializer.class, contentAs = WaybillItem.class) @JsonProperty("responseItems")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM