Graphics2D:在 Java 中从 JSON 绘制多行字符串

Graphics2D: Draw multiple line string from JSON in Java

我使用以下方法将文本添加到我生成的二维码中:

private static void insertText(BufferedImage source, String text, int x, int y) {
    Graphics2D graph = source.createGraphics();
    graph.setFont(new Font("Arial", Font.PLAIN, 12));
    graph.setColor(Color.BLACK);
    graph.drawString(text, x, y);
}

它将给定的文本添加到二维码的顶部。但是,我想绘制如下所示的 JSON 键值对作为文本,但我看不到 Graphics2D.

的正确方法

而不是:

{ "id": 100, "name": "John", "surname": "Boython" }

我要绘制如下图的文字:

id: 100
name: John
surname: Boython 

那么,我该怎么做呢?另外,Graphics2D的绘图文字是否有换行属性?

您可以将所有 JSON 个元素一一添加到 Graphics2D 对象中。

graph.drawString("id: " + json.get("id"), x, y);
graph.drawString("name: " + json.get("name"), x, y + 20);
graph.drawString("surname: " + json.get("surname"), x, y + 30);

假设 json 是一个 Map,其中有键值对。或者您可以使用任何其他库或您喜欢的 class。

编辑: 您可以很容易地使用 Gson 将 JSON 字符串转换为 Map。阅读此答案

以上回答link:

Map<String, Object> jsonMap = new Gson().fromJson(
    jsonString, new TypeToken<HashMap<String, Object>>() {}.getType()
);

之后你可以遍历键

int mHeight = y;
for (Map.EntrySet<String, String> kv : jsonMap.entrySet()) {
    graph.drawString(kv.getKey() + ": " + kv.getValue(), x, mHeight + 10);
    mHeight += 10;
}