Skip to content

Commit af9d807

Browse files
authored
fix bug for issue alibaba#3464 (alibaba#3501)
* Update ObjectWriterAdapter.java fix bug for Issue3464 * Create Issue3464.java fix bug for Issue3464 * Update ObjectWriterAdapter.java Resolve Checkstyle Issues * Update Issue3464.java Resolve Checkstyle Issues
1 parent 941caf8 commit af9d807

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

core/src/main/java/com/alibaba/fastjson2/writer/ObjectWriterAdapter.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -675,6 +675,11 @@ public JSONObject toJSONObject(T object, long features) {
675675
if (fieldValue == object) {
676676
fieldValue = jsonObject;
677677
}
678+
if (fieldValue instanceof Enum) {
679+
if ((features & WriteEnumsUsingName.mask) != 0) {
680+
fieldValue = ((Enum) fieldValue).name();
681+
}
682+
}
678683
if (fieldWriter instanceof FieldWriterObject && !(fieldValue instanceof Map)) {
679684
ObjectWriter valueWriter = fieldWriter.getInitWriter();
680685
if (valueWriter == null) {
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.alibaba.fastjson2.issues_3400;
2+
3+
import com.alibaba.fastjson2.JSON;
4+
import com.alibaba.fastjson2.JSONObject;
5+
import com.alibaba.fastjson2.JSONWriter;
6+
import lombok.AllArgsConstructor;
7+
import lombok.Getter;
8+
import org.junit.Test;
9+
10+
import java.util.concurrent.TimeUnit;
11+
12+
import static org.junit.jupiter.api.Assertions.assertEquals;
13+
14+
public class Issue3464 {
15+
@Test
16+
public void test() {
17+
Data data = new Data(TimeUnit.MINUTES);
18+
JSONObject json = (JSONObject) JSON.toJSON(data, JSONWriter.Feature.WriteEnumsUsingName);
19+
assertEquals(json.get("unit").getClass().toString(), "class java.lang.String");
20+
}
21+
22+
@Getter
23+
@AllArgsConstructor
24+
private static class Data {
25+
private TimeUnit unit;
26+
}
27+
}

0 commit comments

Comments
 (0)