我使用以下方法将文本添加到我生成的二维码中:
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,其中有键值对。或者,您可以使用任何其他您喜欢的库或类。
编辑:使用Gson
可以很容易地将JSON字符串转换为Map
。阅读此答案https://stackoverflow.com/a/21720953/7373144
以上链接中的答案:
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;
}