-
Notifications
You must be signed in to change notification settings - Fork 541
Closed
Labels
Milestone
Description
问题描述
WriteNonStringValueAsString没有处理Boolean类型
环境信息
- OS信息: [MacOS 12.7.4 M1 Pro 16 GB]
- JDK信息: [Openjdk 17.0.6]
- 版本信息:[Fastjson2-2.0.49]
重现步骤
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONWriter;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.assertEquals;
public class MutatedIssue1874_271 {
@Test
public void mutatedTest() {
List<TestJson> list = new ArrayList<>();
list.add(new TestJson(true, Boolean.TRUE));
list.add(new TestJson(false, Boolean.FALSE));
String json = JSON.toJSONString(list, JSONWriter.Feature.WriteNonStringValueAsString);
System.out.println(json);
List<TestJson> list2 = JSON.parseArray(json, TestJson.class);
assertEquals(list, list2);
assertEquals("[{\"b\":\"true\",\"b2\":\"true\"},{\"b\":\"false\",\"b2\":\"false\"}]", json);
}
@Data
@AllArgsConstructor
public static class TestJson {
private boolean b;
private Boolean b2;
}
@Test
public void mutatedTest1() {
List<TestJson1> list = new ArrayList<>();
list.add(new TestJson1(1, 1));
list.add(new TestJson1(2, 2));
String json = JSON.toJSONString(list, JSONWriter.Feature.WriteNonStringValueAsString);
System.out.println(json);
List<TestJson1> list2 = JSON.parseArray(json, TestJson1.class);
assertEquals(list, list2);
assertEquals("[{\"a\":\"1\",\"a2\":\"1\"},{\"a\":\"2\",\"a2\":\"2\"}]", json);
}
@Data
@AllArgsConstructor
public static class TestJson1 {
private int a;
private Integer a2;
}
}
期待的正确结果
[{"b":"true","b2":"true"},{"b":"false","b2":"false"}]
相关日志输出
Expected :[{"b":"true","b2":"true"},{"b":"false","b2":"false"}]
Actual :[{"b":"true","b2":true},{"b":"false","b2":false}]