首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JSON变量替换占位符

JSON变量替换占位符
EN

Stack Overflow用户
提问于 2015-01-23 00:28:24
回答 3查看 11.6K关注 0票数 9

我正在寻找一个Java库,它可以在将Json动态编组为对象时进行变量替换。

例如,Json模板将具有变量替换站点/占位符,如下所示:

代码语言:javascript
运行
复制
{
  "User": {
    "Name": "${name}",
    "Age": ${age}
  }
}

这将导致Java对象在封送后表示以下内容:

代码语言:javascript
运行
复制
{
  "User": {
    "Name": "Elvis",
    "Age": 80
  }
}

我想要的是这样的东西:

代码语言:javascript
运行
复制
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(new File("c:\\user.json.template"), User.class, "Elvis", 80);
EN

回答 3

Stack Overflow用户

发布于 2015-01-23 03:54:05

这实际上超出了JSON库的范围,因为JSON格式本身不支持或没有变量替换的概念。您最好的选择可能是使用JSON库(如Jackson)来获取树表示(对于Jackson,应该是JsonNode),然后遍历它,并使用另一个库来处理文本替换。有许多方法可以做到这一点,从stringtemplate到其他方法(可能是其他答案所指的MessageFormat )。

如果您的替换永远不会使“有趣的字符”(引号、换行符)变得有趣,也可以恢复另一个;如果是这样的话,您可以首先使用字符串模板库,然后使用JSON解析器提供处理后的文本。但它的风险更高,因为通常情况下,最终会出现这样的情况,即您确实尝试添加一个引号,然后解析失败。

票数 1
EN

Stack Overflow用户

发布于 2019-11-08 15:19:05

您可以使用Apache Velocity等模板引擎对输入流进行预处理,然后使用JSON解析器解析结果。要使进程“在运行中”,您可以在单独的线程中运行Velocity,并让它将其输出写入PipedOutputStream

票数 0
EN

Stack Overflow用户

发布于 2015-01-23 00:34:19

可能是来自apache commons的MessageFormat对象可以提供帮助?下面是一个示例:http://examples.javacodegeeks.com/core-java/text/messageformat/java-messageformat-example/

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28093828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档