我如何反序列化Json数组对象,如字符串?



我有一个DTO,其中Spring Boot试图反序列化请求体,但是,在这种情况下,我需要将JSON数组对象反序列化为字符串。

这是JSON请求:

{
"metadata": [{
"example": 1
}]
}

这是我的dto:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class someDto implements Serializable {
@JsonDeserialize(using = MetadataDeserializer.class)
@JsonProperty("metadata")
@JsonbProperty("metadata")
private String metadata;
}

我试着反序列化与反序列化器,但它没有工作:

public class MetadataDeserializer extends StdDeserializer<String> {
public MetadataDeserializer() {
super(String.class);
}
@Override
public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
return jsonParser.getValueAsString();
}
}

我需要捕捉一些类似的:

"metadata": "[{ "example": 1 }]"

此反序列化器在接收到带有@RequestBody的有效负载时启动。

我用这个反序列化器解决了这个问题:

public class MetadataDeserializer extends StdDeserializer<String> {
public MetadataDeserializer() {
super(String.class);
}
@Override
public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
return jsonParser.readValueAsTree().toString();
}
}

相关内容

  • 没有找到相关文章

最新更新