1. 未格式化的打印
(1)需要序列化的类
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Info {
private String name;
private List<String> list;
public static Info of(String name, List<String> list) {
return Info.builder()
.name(name)
.list(list)
.build();
}
}
(2)序列化工具类
@UtilityClass
public class JsonUtils {
private static ObjectMapper mapper = new ObjectMapper();
@SneakyThrows
public static String serialize(Object obj) {
return mapper.writeValueAsString(obj);
}
}
(3)测试类
public class TestMain {
public static void main(String[] args) {
Info info = Info.of("test", buildList(10));
String json = JsonUtils.serialize(info);
System.out.println(json);
}
public static List<String> buildList(int n) {
List<String> list = new ArrayList<>();
for (int i = 0; i < n; ++ i) {
list.add(buildString(i, 10));
}
return list;
}
private static String buildString(int num, int len) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; ++ i) {
sb.append(num);
}
return sb.toString();
}
}
控制台输出:
{"name":"test","list":["0000000000","1111111111","2222222222","3333333333","4444444444","5555555555","6666666666","7777777777","8888888888","9999999999"]}
2. 格式化输出
@UtilityClass
public class JsonUtils {
private static ObjectMapper mapper = new ObjectMapper();
@SneakyThrows
public static String serialize(Object obj) {
ObjectWriter objectWriter = mapper.writerWithDefaultPrettyPrinter();
return objectWriter.writeValueAsString(obj);
}
}
运行上面的 TestMain
测试类,控制台输出如下:
{
"name" : "test",
"list" : [ "0000000000", "1111111111", "2222222222", "3333333333", "4444444444", "5555555555", "6666666666", "7777777777", "8888888888", "9999999999" ]
}
可以发现 List
元素全部在一行。
3. 格式化 List 输出
@UtilityClass
public class JsonUtils {
private static ObjectMapper mapper = new ObjectMapper();
@SneakyThrows
public static String serialize(Object obj) {
// 配置四个空格的缩进
DefaultPrettyPrinter.Indenter indenter = new DefaultIndenter(" ", DefaultIndenter.SYS_LF);
DefaultPrettyPrinter printer = new DefaultPrettyPrinter();
printer.indentObjectsWith(indenter); // Indent JSON objects
printer.indentArraysWith(indenter); // Indent JSON arrays
return mapper.writer(printer).writeValueAsString(obj);
}
}
运行上面的 TestMain
测试类,控制台输出如下:
{
"name" : "test",
"list" : [
"0000000000",
"1111111111",
"2222222222",
"3333333333",
"4444444444",
"5555555555",
"6666666666",
"7777777777",
"8888888888",
"9999999999"
]
}
网友评论