使用Gson将复杂的Java映射转换为Json

时间:2015-05-14 20:29:52

标签: java json gson

我尝试使用gson将Java Map(带有MyClass值列表)转换为json。

Map<Integer, List<MyClass>> myMap

以下是我的表现......

Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
String json = gson.toJson(myMap);
System.out.println(json);

它产生的json接近但不是我期望/想要的格式。以下是制作的内容:

  

{&#34; 0&#34;:[{MyClassItem1},{MyClassItem2}等],&#34; 1&#34;:[{MyClassItem3},   {MyClassItem4}等等......}

我希望/更喜欢它产生:

  

[{&#34; 0&#34;:[{MyClassItem1},{MyClassItem2}等]},{&#34; 1&#34;:[{MyClassItem3},   {MyClassItem4}等,等等......]

这可能吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:0)

嗯...... Gson将数据序列化为最合适的形式。您似乎想要一个Map.Entry数组。尝试类似:

Map<Integer, List<MyClass>> myMap = ...;
Set<Map.Entry<Integer, List<MyClass>>> entrySet = myMap.entrySet();
Object[] data = entrySet.toArray(new Object[entrySet.size()]);

// serialize data variable

但请注意,Gson可能无法开箱即用Map.Entry序列化。