我有一个想要序列化为JSON的对象。此对象是包含特定对象列表的地图。这与它类似:
Map<String, List<Object>> map = new Map<String, List<Object>>();
我正在使用FlexJSON。我只能使用flexjson.JSONSerializer
。有我的尝试:
JSONSerializer jsonSerializer = new JSONSerializer();
// jsonSerializer.include("map");
// jsonSerializer.include("map.myList.object");
jsonSerializer.transform(new MapTransformer(), "map");
jsonSerializer.exclude("*.class");
正如您所看到的,我正在尝试使用Transformer
课程,但我没有成功。正如我想的那样,如果我的List<Object>
拥有自己的名称,例如myList
,则评论的行将起作用。但它没有自己的名字,因为它是我地图的values
。
如何使用FlexJSON将此类对象序列化为JSON?
答案 0 :(得分:4)
Quoi是正确的,很可能是您想要使用的答案。但是,只有这样您才能了解它的工作原理,您可以这样做:
new JSONSerializer().include("values.values").serialize( myMap );
地图和列表是容器,并且包含其中包含的元素的特殊表达式。如果要讨论容器值的路径,请在路径中使用“值”表达式。 Map的两个特殊表达式“keys”和“values”。其他收藏品有“价值”。
另一种选择是使用如下通配符:
new JSONSerializer().include("values.*").serialize( myMap );
你可以看到Quoi的答案中使用的通配符也可以排除类属性。
答案 1 :(得分:3)
尝试
String jsonString = new JSONSerializer().exclude("*.class").deepSerialize(map);
deepSerialize方法执行目标实例的深度序列化。默认情况下,它将包括所有集合,映射和数组,因此包括将被忽略,除非您想要包含注释排除的内容。