Jackson CsvMapper嵌套对象字段

时间:2018-03-26 15:13:05

标签: java csv jackson

我想用jackson CsvMapper将Pojos序列化/反序列化为csv格式。我的pojos:

public class User implements Serializable {

    String name;

    @JsonUnwrapped(prefix = "||")
    Role role;

    String email;
}

public class Role implements Serializable {

    Long id;

    String name;
}

我现在得到的是什么:

name|email|||id|||name 
New User|newuser@gmail.com|1|User 
New User2|newuser2@gmail.com|1|User 
New User3|newuser3@gmail.com|1|User

我希望得到像以下分隔符的内容:

New User|newuser@gmail.com|||1|User 

(只有嵌套对象与其他分隔符分隔,不是它的字段,而且分隔符也必须应用于数据,而不仅仅应用于标题) 我还需要在行内移动嵌套对象。例如预期结果:

New User|||1|User|||newuser@gmail.com 

我目前的架构和序列化代码:

 CsvSchema userSchema = csvMapper
            .schemaFor(User.class)
            .sortedBy("name", "role.name", "role.id", "email")
            .withoutQuoteChar()
            .withColumnReordering(true)
            .withColumnSeparator('|')
            .withHeader();

        csvMapper.writer(userSchema).writeValueAsString(users);

0 个答案:

没有答案