From 50ceaf60979885272742ed8e211e8917c3a5e052 Mon Sep 17 00:00:00 2001 From: HoshimiRIN Date: Fri, 29 Sep 2023 00:14:10 +0800 Subject: [PATCH] Add Support for sunplus --- .../model/userdata/UserMusicDetail.java | 3 +++ .../util/BooleanStringIntDeserializer.java | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 src/main/java/icu/samnyan/aqua/sega/chusan/util/BooleanStringIntDeserializer.java diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserMusicDetail.java b/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserMusicDetail.java index 4d655bbf..71a92dec 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserMusicDetail.java +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserMusicDetail.java @@ -3,6 +3,8 @@ package icu.samnyan.aqua.sega.chusan.model.userdata; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import icu.samnyan.aqua.sega.chusan.util.BooleanStringIntDeserializer; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -67,6 +69,7 @@ public class UserMusicDetail implements Serializable { @JsonProperty("isAllJustice") private boolean isAllJustice; + @JsonDeserialize(using = BooleanStringIntDeserializer.class) @JsonProperty("isSuccess") private boolean isSuccess; diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/util/BooleanStringIntDeserializer.java b/src/main/java/icu/samnyan/aqua/sega/chusan/util/BooleanStringIntDeserializer.java new file mode 100644 index 00000000..ad1023ad --- /dev/null +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/util/BooleanStringIntDeserializer.java @@ -0,0 +1,21 @@ +package icu.samnyan.aqua.sega.chusan.util; + +import com.fasterxml.jackson.core.JacksonException; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; + +import java.io.IOException; + +public class BooleanStringIntDeserializer extends JsonDeserializer { + @Override + public Boolean deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JacksonException { + return switch (p.getCurrentToken()) { + case VALUE_STRING -> p.getText().trim().equals("1"); + case VALUE_NUMBER_INT -> p.getIntValue() == 1; + case VALUE_TRUE -> true; + case VALUE_FALSE -> false; + default -> throw new UnsupportedOperationException("Cannot deserialize to boolean field"); + }; + } +}