将java Object转换为CSV

时间:2012-08-03 07:40:59

标签: java gson

我应该使用什么API将Java对象转换为CSV。我可以使用google-gson将java对象转换为CSV格式吗?

4 个答案:

答案 0 :(得分:5)

Jackson可以轻松转换为CSV(使用Java和/或JSON)。

http://www.cowtowncoder.com/blog/archives/2012/03/entry_468.html上的帖子详细介绍了如何使用它。

答案 1 :(得分:1)

请告诉我您对GSON的具体要求。

Gson提供toJson()和fromJson()方法将Java对象转换为JSON,反之亦然。

你可以参考这个link。此链接提供了GSON下可用的API列表

答案 2 :(得分:1)

这实际上是关于使用Jackson CSV的上述帖子的补充。我遇到的一个问题是,当我以编程方式执行并且不使用任何注释时,它会引起对象中不在CSV模式中的任何属性的任何错误。以下是一些可能有用的示例代码。如果您想了解更多有关过滤器和注释内省运算符的原因,请参阅here

public class CsvWriter {

private final static String CSV_FILTER_NAME = "csvFilter";

public void writeObjects( OutputStream outputStream,
                          List<?> objects,
                          CsvSchema csvSchema ) throws IOException
{
    HashSet<String> columnNames = new HashSet<String>();
    for (CsvSchema.Column column : csvSchema) {
        columnNames.add( column.getName() );
    }

    SimpleBeanPropertyFilter csvReponseFilter =
            new SimpleBeanPropertyFilter.FilterExceptFilter(columnNames);
    FilterProvider filterProvider = new SimpleFilterProvider().addFilter( CSV_FILTER_NAME, csvReponseFilter );

    CsvMapper csvMapper = new CsvMapper();
    csvMapper.setFilters( filterProvider );
    csvMapper.setAnnotationIntrospector( new CsvAnnotationIntrospector() );

    ObjectWriter objectWriter = csvMapper.writer(csvSchema);
    objectWriter.writeValue( outputStream, objects);
}

private class CsvAnnotationIntrospector extends JacksonAnnotationIntrospector {
    @Override
    public Object findFilterId(Annotated a) {
        return CSV_FILTER_NAME;
    }
}

}

以下是如何使用它的示例:

public class CsvWriterTest extends TestCase {

public void testWriteObjects() throws Exception {
    Vector <Entity> entities = new Vector<Entity>();
    entities.add( new Entity("Test entity 1", "Test description 1", "Test unused field"));
    entities.add(new Entity("Test entity 2", "Test description 2", "Test unused field"));

    CsvSchema csvSchema = CsvSchema.builder()
            .addColumn("name")
            .addColumn("description")
            .setUseHeader( true )
            .build()
            .withLineSeparator("\r\n");

    CsvWriter csvWriter = new CsvWriter();
    csvWriter.writeObjects(System.out, entities, csvSchema);
}

public class Entity {
    private String name;
    private String description;
    private String unusedField;
    // constructor, getter and setter methods omitted for brevity
}

}

测试方法的输出是:
名称,描述
&#34;测试实体1&#34;,&#34;测试描述1&#34;
&#34;测试实体2&#34;,&#34;测试描述2&#34;

答案 3 :(得分:1)

图书馆json2flat可以将 JSON 文档转换为 CSV 格式。

它不依赖于任何POJO来获取CSV。

毕竟,用户的观点是他们希望如何以 CSV 表示形式查看 JSON 文档。