mirror of https://github.com/hykilpikonna/AquaDX
[F] Fix chusan duplicate key
parent
e78d80b99d
commit
2d4bb90acc
|
@ -3,7 +3,6 @@ package icu.samnyan.aqua.sega.chusan.model.userdata
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore
|
import com.fasterxml.jackson.annotation.JsonIgnore
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude
|
import com.fasterxml.jackson.annotation.JsonInclude
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty
|
import com.fasterxml.jackson.annotation.JsonProperty
|
||||||
import com.fasterxml.jackson.annotation.JsonPropertyOrder
|
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize
|
||||||
import icu.samnyan.aqua.net.games.BaseEntity
|
import icu.samnyan.aqua.net.games.BaseEntity
|
||||||
import icu.samnyan.aqua.net.games.IUserData
|
import icu.samnyan.aqua.net.games.IUserData
|
||||||
|
@ -134,6 +133,7 @@ class Chu3UserData : BaseEntity(), IUserData {
|
||||||
@Transient
|
@Transient
|
||||||
var rankUpChallengeResults: List<Any> = emptyList()
|
var rankUpChallengeResults: List<Any> = emptyList()
|
||||||
|
|
||||||
|
// When serialized, this field should be "isNetBattleHost", not "netBattleHost"
|
||||||
@JsonProperty("isNetBattleHost")
|
@JsonProperty("isNetBattleHost")
|
||||||
var isNetBattleHost = false
|
var isNetBattleHost = false
|
||||||
var netBattleEndState = 0
|
var netBattleEndState = 0
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
package icu.samnyan.aqua.sega.util.jackson;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonGenerator;
|
|
||||||
import com.fasterxml.jackson.databind.SerializerProvider;
|
|
||||||
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author samnyan (privateamusement@protonmail.com)
|
|
||||||
*/
|
|
||||||
public class BooleanStringSerializer extends StdSerializer<Boolean> {
|
|
||||||
|
|
||||||
public BooleanStringSerializer() {
|
|
||||||
this(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public BooleanStringSerializer(Class<Boolean> t) {
|
|
||||||
super(t);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void serialize(Boolean value, JsonGenerator gen, SerializerProvider provider) throws IOException {
|
|
||||||
gen.writeString(value.toString());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,54 +0,0 @@
|
||||||
package icu.samnyan.aqua.sega.util.jackson;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
||||||
import com.fasterxml.jackson.core.json.JsonWriteFeature;
|
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
|
||||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
|
||||||
import com.fasterxml.jackson.databind.json.JsonMapper;
|
|
||||||
import com.fasterxml.jackson.databind.module.SimpleModule;
|
|
||||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
|
|
||||||
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author samnyan (privateamusement@protonmail.com)
|
|
||||||
*/
|
|
||||||
@Component
|
|
||||||
public class StringMapper {
|
|
||||||
|
|
||||||
private final ObjectMapper mapper;
|
|
||||||
|
|
||||||
public StringMapper() {
|
|
||||||
SimpleModule module = new SimpleModule();
|
|
||||||
module.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
||||||
module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
||||||
module.addSerializer(Boolean.class, new BooleanStringSerializer());
|
|
||||||
module.addSerializer(boolean.class, new BooleanStringSerializer());
|
|
||||||
mapper = JsonMapper.builder()
|
|
||||||
.enable(JsonWriteFeature.WRITE_NUMBERS_AS_STRINGS)
|
|
||||||
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
|
|
||||||
.configure(SerializationFeature.WRITE_ENUMS_USING_INDEX, true)
|
|
||||||
.addModule(module)
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String write(Object o) throws JsonProcessingException {
|
|
||||||
return mapper.writeValueAsString(o);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public <T> T convert(Object map, Class<T> toClass) {
|
|
||||||
return mapper.convertValue(map, toClass);
|
|
||||||
}
|
|
||||||
|
|
||||||
public LinkedHashMap<String, Object> toMap(Object object) {
|
|
||||||
return mapper.convertValue(object, new TypeReference<>() {
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
package icu.samnyan.aqua.sega.util.jackson
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonGenerator
|
||||||
|
import com.fasterxml.jackson.core.json.JsonWriteFeature
|
||||||
|
import com.fasterxml.jackson.core.type.TypeReference
|
||||||
|
import com.fasterxml.jackson.databind.DeserializationFeature
|
||||||
|
import com.fasterxml.jackson.databind.SerializationFeature
|
||||||
|
import com.fasterxml.jackson.databind.SerializerProvider
|
||||||
|
import com.fasterxml.jackson.databind.module.SimpleModule
|
||||||
|
import com.fasterxml.jackson.databind.ser.std.StdSerializer
|
||||||
|
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer
|
||||||
|
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer
|
||||||
|
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
|
||||||
|
import org.springframework.stereotype.Component
|
||||||
|
import java.time.LocalDateTime
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
|
|
||||||
|
//class BooleanStringSerializer(t: Class<Boolean>? = null) : StdSerializer<Boolean>(t) {
|
||||||
|
// override fun serialize(value: Boolean, gen: JsonGenerator, provider: SerializerProvider) {
|
||||||
|
// gen.writeString(value.toString())
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
@Component
|
||||||
|
class StringMapper {
|
||||||
|
fun write(o: Any?) = STRING_MAPPER.writeValueAsString(o)
|
||||||
|
fun <T> convert(map: Any?, toClass: Class<T>?) = STRING_MAPPER.convertValue(map, toClass)
|
||||||
|
fun toMap(obj: Any?) = STRING_MAPPER.convertValue(obj, object : TypeReference<LinkedHashMap<String, Any>>() {})
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val BOOLEAN_SERIALIZER = object : StdSerializer<Boolean>(Boolean::class.java) {
|
||||||
|
override fun serialize(v: Boolean, gen: JsonGenerator, p: SerializerProvider) {
|
||||||
|
gen.writeString(v.toString())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var STRING_MAPPER = jacksonObjectMapper().apply {
|
||||||
|
enable(JsonWriteFeature.WRITE_NUMBERS_AS_STRINGS.mappedFeature())
|
||||||
|
configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
|
||||||
|
configure(SerializationFeature.WRITE_ENUMS_USING_INDEX, true)
|
||||||
|
findAndRegisterModules()
|
||||||
|
registerModule(SimpleModule().apply {
|
||||||
|
addSerializer(
|
||||||
|
LocalDateTime::class.java,
|
||||||
|
LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
|
||||||
|
)
|
||||||
|
addDeserializer(
|
||||||
|
LocalDateTime::class.java,
|
||||||
|
LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
|
||||||
|
)
|
||||||
|
})
|
||||||
|
registerModule(SimpleModule().apply {
|
||||||
|
addSerializer(Boolean::class.java, BOOLEAN_SERIALIZER)
|
||||||
|
addSerializer(Boolean::class.javaPrimitiveType, BOOLEAN_SERIALIZER)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue