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;
}
我使用以下方法将文本添加到我生成的二维码中:
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;
}