JSONSymbolPrinter.java
- package com.jeantessier.classreader;
- import java.io.*;
- import java.util.*;
- import java.util.stream.*;
- import static java.util.stream.Collectors.*;
- public class JSONSymbolPrinter extends SymbolPrinter {
- public JSONSymbolPrinter(PrintWriter out) {
- super(out);
- }
- public void print(SymbolGatherer gatherer) throws IOException {
- var output = "[" +
- gatherer.stream()
- .map(this::visitableToRecord)
- .map(this::recordToJSON)
- .collect(joining(",")) +
- "]";
- getOut().println(output);
- }
- private String recordToJSON(Map<String, ?> record) {
- return "{" +
- record.entrySet().stream()
- .map(entry -> {
- if (entry.getValue() instanceof Stream<?> stream) {
- return "\"" + entry.getKey() + "\":[" + format(stream) + "]";
- } else {
- return "\"" + entry.getKey() + "\": \"" + entry.getValue() + "\"";
- }
- })
- .collect(joining(", "))
- +
- "}";
- }
- }