Skip to content

Commit 1f1d416

Browse files
jujnwenshao
authored andcommitted
fix: double quotes bug in TypeUtils.cast, for issue #3932
1 parent 7de691a commit 1f1d416

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

core/src/main/java/com/alibaba/fastjson2/util/TypeUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1477,7 +1477,7 @@ public static <T> T cast(Object obj, Class<T> targetClass, ObjectReaderProvider
14771477
}
14781478

14791479
if (targetClass == String.class) {
1480-
if (obj instanceof Character) {
1480+
if (obj instanceof Character || obj instanceof Number || obj instanceof Boolean || obj instanceof Enum) {
14811481
return (T) obj.toString();
14821482
}
14831483

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.alibaba.fastjson2.issues_3900;
2+
3+
import com.alibaba.fastjson2.JSON;
4+
import com.alibaba.fastjson2.JSONObject;
5+
import com.alibaba.fastjson2.writer.ObjectWriter;
6+
import com.alibaba.fastjson2.writer.ObjectWriters;
7+
import lombok.Data;
8+
import org.junit.jupiter.api.Test;
9+
10+
import java.io.Serializable;
11+
12+
import static org.junit.jupiter.api.Assertions.assertEquals;
13+
14+
class Issue3932 {
15+
@Test
16+
public void test() {
17+
try {
18+
JSON.register(Long.class, ObjectWriters.ofToString(Object::toString));
19+
20+
String str = "{\"id\":958829775217152}";
21+
JSONObject obj = (JSONObject) JSON.parse(str.getBytes());
22+
SerializeTest serializeTest = obj.toJavaObject(SerializeTest.class);
23+
assertEquals("958829775217152", serializeTest.getId());
24+
} finally {
25+
JSON.register(Long.class, (ObjectWriter) null);
26+
}
27+
}
28+
29+
@Data
30+
public static class SerializeTest implements Serializable {
31+
private String id;
32+
}
33+
}

0 commit comments

Comments
 (0)