如何将带有对象和数组索引的字符串转换为json

时间:2014-11-27 09:37:33

标签: java arrays json freemarker

我从另一个程序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可以评估json。

所以我需要知道如何将这个地图转换为对象或json。我需要这样的东西:

{
    "news": [
        {"title": "Title1", "body": "Body1"},
        {"title": "Title2", "body": "Body2"}            
    ]
}

地图中的参数名称未知,不完全是“新闻”,不完全是“标题”和“正文”,我不知道。 可能有一些图书馆用于此类目的吗?

2 个答案:

答案 0 :(得分:1)

由于您在那里使用自己的语言,只需为其编写解析器。毕竟,这不是一门复杂的语言。此外,根据我对该问题的了解,将其转换为JSON是没有意义的。是的,FTL表达式语法和JSON语法非常重叠。但是你不应解析FTL-s中的任何内容,只需将语言解析为List - s和JavaBeans和/或Map - s,并将该普通Java对象传递给FreeMarker。

答案 1 :(得分:0)

GSonJackson库用于在Java对象和JSON字符串之间进行转换。