如何序列化Map <string,list <object =“”>&gt;使用FlexJSON </string,>

时间:2012-09-25 12:14:15

标签: java json jsonserializer flexjson

我有一个想要序列化为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?

2 个答案:

答案 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方法执行目标实例的深度序列化。默认情况下,它将包括所有集合,映射和数组,因此包括将被忽略,除非您想要包含注释排除的内容。