没有地图名称的序列化和反序列化

时间:2018-11-05 16:44:07

标签: java json

我有以下对象:

public class Class_a{
   private List<class_b> someList;
 }

public class Class_b{
   private Map<String,String> someMap;
 }

我的json看起来像这样:

"someList":[{"someMap":{"strKey1":"strValue1"}},{"someMap":{"strKey2":"strValue2"}}] 

是否可以在不更改我的对象的情况下序列化一个看起来像这样的Json(并且我可以选择反序列化对象):

"someList":[{"strKey1":"strValue1"},{"strKey2":"strValue2"}]

*我知道,如果将这样定义我的对象:

 public class Class_a{
   private List<Map<Strung,String>> someList;
 }

我将得到我想要的Json-但我正在尝试找到一种更优雅的解决方案,然后是包含“地图”的“列表”

我的项目使用spring框架和Jackson。

1 个答案:

答案 0 :(得分:0)

这对我有用,我只需要向您的班级添加getter和setter即可,并且我可以用jackson进行解析:

 @Test
    public void t() throws IOException {
        String json = "{\"someList\":[{\"someMap\":{\"strKey1\":\"strValue1\"}},{\"someMap\":{\"strKey2\":\"strValue2\"}}]}";
        Class_a a = new ObjectMapper().readValue(json, Class_a.class);

        System.out.println(a);

    }


@Getter
@Setter
public class Class_a{
   private List<Class_b> someList;
 }


@Getter
@Setter
public class Class_b{
    private Map<String,String> someMap;
}

我正在使用lombok,但这没什么特别的,您也可以手动创建getter / setter,并且可以正常工作