diff --git a/core/src/main/java/com/alibaba/fastjson2/writer/ObjectWriterProvider.java b/core/src/main/java/com/alibaba/fastjson2/writer/ObjectWriterProvider.java index 3fde6d1742..d991fad09d 100644 --- a/core/src/main/java/com/alibaba/fastjson2/writer/ObjectWriterProvider.java +++ b/core/src/main/java/com/alibaba/fastjson2/writer/ObjectWriterProvider.java @@ -8,10 +8,7 @@ import com.alibaba.fastjson2.modules.ObjectCodecProvider; import com.alibaba.fastjson2.modules.ObjectWriterAnnotationProcessor; import com.alibaba.fastjson2.modules.ObjectWriterModule; -import com.alibaba.fastjson2.util.BeanUtils; -import com.alibaba.fastjson2.util.GuavaSupport; -import com.alibaba.fastjson2.util.JDKUtils; -import com.alibaba.fastjson2.util.TypeUtils; +import com.alibaba.fastjson2.util.*; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -447,6 +444,8 @@ private ObjectWriter getObjectWriterInternal(Type objectType, Class objectClass, case "android.net.Uri$StringUri": objectWriter = ObjectWriterImplToString.INSTANCE; break; + case "com.clickhouse.data.value.UnsignedLong": + objectWriter = new ObjectWriterImplToString(true); default: break; } diff --git a/extension/pom.xml b/extension/pom.xml index 68897a8e02..fbd1884653 100644 --- a/extension/pom.xml +++ b/extension/pom.xml @@ -149,6 +149,13 @@ ${fastjson1x.version} test + + com.clickhouse + clickhouse-jdbc + 0.6.5 + http + test + com.fasterxml.jackson.datatype jackson-datatype-jsr310 diff --git a/extension/src/test/java/com/alibaba/fastjson2/issues/Issue2958.java b/extension/src/test/java/com/alibaba/fastjson2/issues/Issue2958.java new file mode 100644 index 0000000000..fc54f8c984 --- /dev/null +++ b/extension/src/test/java/com/alibaba/fastjson2/issues/Issue2958.java @@ -0,0 +1,19 @@ +package com.alibaba.fastjson2.issues; + +import com.alibaba.fastjson2.JSON; +import com.clickhouse.data.value.UnsignedLong; +import org.junit.jupiter.api.Test; + +import java.math.BigInteger; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class Issue2958 { + @Test + public void test() throws Exception { + String str = "9223372036854775808"; + UnsignedLong unsignedLong = UnsignedLong.valueOf(new BigInteger(str)); + String json = JSON.toJSONString(unsignedLong); + assertEquals(str, json); + } +}