Skip to content

Commit 3b8cf0d

Browse files
committed
improved fastjson 1.x compatible, support SerializerFeature.WriteEnumUsingName, fix issue #859
1 parent 1600401 commit 3b8cf0d

File tree

3 files changed

+78
-0
lines changed
  • core/src/test/java/com/alibaba/fastjson2/issues
  • fastjson1-compatible/src

3 files changed

+78
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.alibaba.fastjson2.issues;
2+
3+
import com.alibaba.fastjson2.JSON;
4+
import com.alibaba.fastjson2.JSONWriter;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Getter;
8+
import org.junit.jupiter.api.Test;
9+
10+
import static org.junit.jupiter.api.Assertions.assertEquals;
11+
12+
public class Issue859 {
13+
@Test
14+
public void test() {
15+
PayoutBill payoutBill = PayoutBill.builder().currency(Currency.CNY).build();
16+
String str = JSON.toJSONString(payoutBill, JSONWriter.Feature.WriteEnumsUsingName);
17+
assertEquals("{\"currency\":\"CNY\"}", str);
18+
}
19+
20+
@Getter
21+
@AllArgsConstructor
22+
public enum Currency {
23+
CNY("人民币"),
24+
USD("美元"),
25+
EUR("欧元"),
26+
GBP("英镑"),
27+
HKD("港币");
28+
29+
private final String desc;
30+
}
31+
32+
@Builder
33+
@Getter
34+
public static class PayoutBill{
35+
private Currency currency;
36+
}
37+
}

fastjson1-compatible/src/main/java/com/alibaba/fastjson/JSON.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,10 @@ public static JSONWriter.Context createWriteContext(SerializeConfig config, int
693693
context.config(JSONWriter.Feature.WriteEnumUsingToString);
694694
}
695695

696+
if ((featuresValue & SerializerFeature.WriteEnumUsingName.mask) != 0) {
697+
context.config(JSONWriter.Feature.WriteEnumsUsingName);
698+
}
699+
696700
if ((featuresValue & SerializerFeature.NotWriteRootClassName.mask) != 0) {
697701
context.config(JSONWriter.Feature.NotWriteRootClassName);
698702
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.alibaba.fastjson.issues_compatible;
2+
3+
import com.alibaba.fastjson.JSON;
4+
import com.alibaba.fastjson.serializer.SerializerFeature;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Getter;
8+
import org.junit.jupiter.api.Test;
9+
10+
import static org.junit.jupiter.api.Assertions.assertEquals;
11+
12+
public class Issue859 {
13+
@Test
14+
public void test() {
15+
PayoutBill payoutBill = PayoutBill.builder().currency(Currency.CNY).build();
16+
String str = JSON.toJSONString(payoutBill, SerializerFeature.WriteEnumUsingName);
17+
assertEquals("{\"currency\":\"CNY\"}", str);
18+
}
19+
20+
@Getter
21+
@AllArgsConstructor
22+
public enum Currency {
23+
CNY("人民币"),
24+
USD("美元"),
25+
EUR("欧元"),
26+
GBP("英镑"),
27+
HKD("港币");
28+
29+
private final String desc;
30+
}
31+
32+
@Builder
33+
@Getter
34+
public static class PayoutBill{
35+
private Currency currency;
36+
}
37+
}

0 commit comments

Comments
 (0)