【发布时间】:2014-12-05 05:10:45
【问题描述】:
我正在使用 Google 的 GSON 库并希望创建一个如下所示的 JSON:
{
"teamSet":[],
"classificationMap" : {}
}
注意 [] 和 {} 分别是空的 Set 和 Map 并且没有用双引号括起来。
我想使用 GSON add/addproperty 方法创建此 Json,而不是使用 Gson.toJson() 方法将 Java 类转换为 JSON。业务用例限制我创建特定的 Java 类,因为 JSON 结构可能会随着时间而改变。所以我不能使用这样的类,因为这会严格地将 JSON 结构与具体类联系起来
class Linkage{
private Set<String> teamSet;
private Map<String, String> classificationMap;
// getter, setter methods follow
...
}
当我使用 GSON.addproperty(genericObject, type) 时,它会在 [] 和 {} 周围附加双引号。我正在使用 couchbase 来满足我的数据库要求,并且 [] 和 {} 周围的双引号使 couchbase 将它们视为字符串而不是 Set/Map。这使我的 Map-Reduce 视图无用且有问题:(
请让我知道是否可以创建这样的 JSON 而不必将其与具体的 JAVA 类联系起来。谢谢!
我当前的代码如下所示:
// create types
Type setType = new TypeToken<Set<String>>() {}.getType();
Type mapType = new TypeToken<Map<String, String>>() {}.getType();
Gson GSON = new Gson();
Set<String> teams = new HashSet<String>();
Map<String, String> classificationMap = new HashMap<String, String>();
JsonObject linkageJson = new JsonObject();
linkageJson.addProperty("teamSet", GSON.toJson(teams, setType));
linkageJson.addProperty("classificationMap", GSON.toJson(classificationMap, mapType));
【问题讨论】:
-
请发布您如何添加集合和地图的代码。
-
请支持/接受我的回答