Skip to content

[BUG] WriteNonStringValueAsString with Boolean #2560

@Cooperzzy

Description

@Cooperzzy

问题描述

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}]

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingfixed

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions