用于从模板创建 json 的 Java 库

Java library for creating json from a template

提问人:pbuchheit 提问时间:10/26/2023 更新时间:10/26/2023 访问量:28

问:

我有一个应用程序,需要使用 json 模板基于一些 java 数据构建 json 字符串。目前,我们只使用大括号 {} 来表示占位符文本,然后手动将这些字符串替换为我们的数据。它可以工作,但它很混乱且容易出错。我希望有一个 java 库可以以更好的方式做到这一点,但到目前为止我还没有找到任何东西。

我首先看了 Freemarker 和 Thymeleaf。虽然它们可以产生我想要的输出,但似乎都不是为了使用 json 模板作为输入而设计的。另一端是像 Gson 和 Jackson 这样的 json 序列化器。这些库可以在 java 对象和 json 字符串之间进行转换,但它们似乎不适合简单地将 json 模板转换为输出字符串。他们可能会做到,但会有一堆开销。

我只想要一些可以接受 json 模板和一些数据对象并输出填充的 json 字符串的东西。如果我有一个模板,比如:

{
  "elementType": "formInputCheckboxGroup",
  "label": {channel.name},
  "name": {channel.id},
  "options": [
    {
      "value": "daily",
      "label": "Daily Email Digest"
    },
    {
      "value": "individual",
      "label": "Individual Email"
    }
  ],
  "value": {channel.values}
}

以及一个 Java 对象,如

public class Channel{
    public String name;
    public String id;
    public String[] values;

    public ChannelMessages(String name, String id, String[] values) {
        this.name = name;
        this.id = id;
        this.values = values;
    }
}

我可以打电话

Template.parse("template.json", {"channel": new Channel("a", "b", ["1", "2", "3"])});

并得到如下输出:

  {
      "elementType": "formInputCheckboxGroup",
      "label": "a",
      "name": "b",
      "options": [
        {
          "value": "daily",
          "label": "Daily Email Digest"
        },
        {
          "value": "individual",
          "label": "Individual Email"
        }
      ],
      "value": ["1","2","3"]
    }
Java JSON 模板

评论


答: 暂无答案