3

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

4

2 回答 2

4

Quoi 是正确的,并且很可能是您想要使用的答案。但是,为了了解更多关于它是如何工作的信息,您可以这样做:

new JSONSerializer().include("values.values").serialize( myMap );

Maps 和 Lists 是容器,对其中包含的元素有特殊的表达方式。当您想谈论容器的值的路径时,您可以在路径中使用“值”表达式。Map 的两个特殊表达式“键”和“值”。其他集合具有“价值”。

另一种选择是使用通配符,如下所示:

   new JSONSerializer().include("values.*").serialize( myMap );

您还可以看到 Quoi 的答案中使用的通配符来排除类属性。

于 2012-09-25T18:20:55.247 回答
3

尝试

String jsonString = new JSONSerializer().exclude("*.class").deepSerialize(map);

deepSerialize 方法执行目标实例的深度序列化。默认情况下,它将包含所有集合、映射和数组,因此包含被忽略,除非您想要包含被注释排除的内容。

于 2012-09-25T12:19:48.880 回答