我从另一个程序收到带有元素字符串表示的 Map:
Map<String,String> properties = new HashMap<String,String>() {{
put("news[0].title", "Title 1");
put("news[0].body", "Body 1");
put("news[1].title", "Title 2");
put("news[1].body", "Body 2");
}};
我需要将其渲染到 freemarker-template 中。有问题
freemarker-flat-structure-of-passing-parameters-transfer-to-array-of-objects
我们认为在 freemarker 中解析此类值是不可能的。但 freemarker 可以 eval json。
所以我需要知道如何将这个 map 转换为对象或json。我需要这样的东西:
{
"news": [
{"title": "Title1", "body": "Body1"},
{"title": "Title2", "body": "Body2"}
]
}
map 中的参数名称未知,不完全是“新闻”,不完全是“标题”和“正文”,我不知道。 可能有一些用于此类目的的库吗?
最佳答案
由于您在那里使用自己的语言,因此只需为其编写一个解析器即可。毕竟它不是一种复杂的语言。另外,根据我对这个问题的了解,将其转换为 JSON 没有意义。是的,FTL 表达式语法和 JSON 语法有很多重叠。但是您不应该解析 FTL-s 内的任何内容,只需将您的语言解析为 List
-s 和 JavaBeans 和/或 Map
-s,然后传递该纯 Java 对象到 FreeMarker。
关于java - 如何将带有对象和数组索引的字符串转换为 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27167290/