What API should I use to convert Java object to CSV. Can I use google-gson for java object conversion to CSV format?
user899876
问问题
29430 次
4 回答
6
Jackson提供了与 CSV(使用 Java 和/或 JSON)的轻松转换。
http://www.cowtowncoder.com/blog/archives/2012/03/entry_468.html上的帖子很好地描述了如何使用它。
于 2012-08-14T20:30:39.987 回答
2
于 2016-12-10T21:35:15.017 回答
1
请告诉我您对 GSON 的具体要求。
Gson 提供 toJson() 和 fromJson() 方法将 Java 对象转换为 JSON,反之亦然。
你能参考这个链接吗?此链接提供了 GSON 下可用的 API 列表
于 2012-08-03T10:02:50.943 回答
1
这实际上是对上述关于使用Jackson CSV的补充。我遇到的一个问题是,当我以编程方式而不使用任何注释时,它会在对象中不在 CSV 模式中的任何属性上引发任何错误。这是一些可能有用的示例代码。如果您想了解更多关于为什么需要过滤器和注释内省器的信息,请参阅此处。
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
}
}
测试方法的输出是:
name,description
"Test entity 1","Test description 1"
"Test entity 2","Test description 2"
于 2015-04-20T16:18:08.150 回答