我正在寻找一个Java库,它可以在将Json动态编组为对象时进行变量替换。
例如,Json模板将具有变量替换站点/占位符,如下所示:
{
"User": {
"Name": "${name}",
"Age": ${age}
}
}
这将导致Java对象在封送后表示以下内容:
{
"User": {
"Name": "Elvis",
"Age": 80
}
}
我想要的是这样的东西:
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(new File("c:\\user.json.template"), User.class, "Elvis", 80);
发布于 2015-01-23 03:54:05
这实际上超出了JSON库的范围,因为JSON格式本身不支持或没有变量替换的概念。您最好的选择可能是使用JSON库(如Jackson)来获取树表示(对于Jackson,应该是JsonNode
),然后遍历它,并使用另一个库来处理文本替换。有许多方法可以做到这一点,从stringtemplate
到其他方法(可能是其他答案所指的MessageFormat
)。
如果您的替换永远不会使“有趣的字符”(引号、换行符)变得有趣,也可以恢复另一个;如果是这样的话,您可以首先使用字符串模板库,然后使用JSON解析器提供处理后的文本。但它的风险更高,因为通常情况下,最终会出现这样的情况,即您确实尝试添加一个引号,然后解析失败。
发布于 2019-11-08 15:19:05
您可以使用Apache Velocity等模板引擎对输入流进行预处理,然后使用JSON解析器解析结果。要使进程“在运行中”,您可以在单独的线程中运行Velocity,并让它将其输出写入PipedOutputStream
。
发布于 2015-01-23 00:34:19
可能是来自apache commons的MessageFormat对象可以提供帮助?下面是一个示例:http://examples.javacodegeeks.com/core-java/text/messageformat/java-messageformat-example/
https://stackoverflow.com/questions/28093828
复制相似问题