使用Jackson

时间:2018-11-22 21:06:22

标签: java csv jackson

对于Jackson,我需要将类Test的实例转换为CSV格式,但是对于包含一个列表(Inner)的类却遇到了问题

例如:

public class Test {

    String testName;

    @JsonUnwrapped
    Simple simple;

    @JsonUnwrapped
    Inner inner;

    public Test(String testName, Simple simple, Inner inner) {
        this.testName = testName;
        this.simple = simple;
        this.inner = inner;
    }

    public String getTestName() {
        return testName;
    }

    public void setTestName(String testName) {
        this.testName = testName;
    }

    public Simple getSimple() {
        return simple;
    }

    public void setSimple(Simple simple) {
        this.simple = simple;
    }

    public Inner getInner() {
        return inner;
    }

    public void setInner(Inner inner) {
        this.inner = inner;
    }
}

class Inner {
    @JsonUnwrapped
    List<Person> persons;

    public Inner(List<Person> persons) {
        this.persons = persons;
    }

    public List<Person> getPersons() {
        return persons;
    }

    public void setPersons(List<Person> persons) {
        this.persons = persons;
    }
}

class Person {
    String name;

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

class Simple {
    String simpleName;

    public Simple(String simpleName) {
        this.simpleName = simpleName;
    }

    public String getSimpleName() {
        return simpleName;
    }

    public void setSimpleName(String simpleName) {
        this.simpleName = simpleName;
    }
}

class Main {
    public static void main(String[] args) {
        Simple simple = new Simple("simple");
        Person person = new Person("jesus");
        Inner inner = new Inner(Arrays.asList(person));

        Test test = new Test("test", simple, inner);
        CsvMapper mapper = new CsvMapper();
        CsvSchema schema = mapper.schemaFor(Test.class);
        try {
            String csv = mapper.writer(schema).writeValueAsString(test);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }

    }
}

对于对象属性,我按照此link的建议使用了注释@JsonUnwrapped, 但是当杰克逊尝试转换列表Inner.persons时,我遇到一个例外:

enter image description here

我该如何解决?

0 个答案:

没有答案