Bir csv Okudum ve json dosyaya saklamak istediğinizsüper csv iç içe fasulye
id,name,description,price,date,name,address
1,SuperCsv,Write csv file,1234.56,28/03/2016,amar,jp nagar
var. İki fasülye kursu (id, isim, açıklama, fiyat, tarih) ve kişi (isim, adres)
Fasulye okuyucu tarafından okunurken, bu kişinin adresini ayarlayamıyorum. (beautified) çıkış
Course [id=1,
name=SuperCsv,
description=Write csv file,
price=1234.56,
date=Mon Mar 28 00:00:00 IST 2016,
person=[
Person [name=amar, address=null],
Person [name=null, address=jpnagar]
]
]
ben adres adıyla ayarlamak istediğiniz olduğu
Kodum:
public static void readCsv(String csvFileName) throws IOException {
ICsvBeanReader beanReader = null;
try {
beanReader = new CsvBeanReader(new FileReader(csvFileName), CsvPreference.STANDARD_PREFERENCE);
// the header elements are used to map the values to the bean (names must match)
final String[] header = beanReader.getHeader(true);
final CellProcessor[] processors = getProcessors();
final String[] fieldMapping = new String[header.length];
for (int i = 0; i < header.length; i++) {
if (i < 5) {
// normal mappings
fieldMapping[i] = header[i];
} else {
// attribute mappings
fieldMapping[i] = "addAttribute";
}}
ObjectMapper mapper=new ObjectMapper();
Course course;
List<Course> courseList=new ArrayList<Course>();
while ((course = beanReader.read(Course.class, fieldMapping, processors)) != null) {
// process course
System.out.println(course);
courseList.add(course);
}
private static CellProcessor[] getProcessors(){
final CellProcessor parsePerson = new CellProcessorAdaptor() {
public Object execute(Object value, CsvContext context) {
return new Person((String) value,null);
}
};
final CellProcessor parsePersonAddress = new CellProcessorAdaptor() {
public Object execute(Object value, CsvContext context) {
return new Person(null,(String) value);
}
};
return new CellProcessor[] {
new ParseInt(),
new NotNull(),
new Optional(),
new ParseDouble(),
new ParseDate("dd/MM/yyyy"),
new Optional(parsePerson),
new Optional(parsePersonAddress)
};
"CsvDozerBeanReader" için bir işe benziyor. Super CSV'de [website] (http://super-csv.github.io/super-csv/examples_dozer.html) çok sayıda örnek var veya [bu SO cevabı] 'na göz atın (http://stackoverflow.com/ sorular/200609/can-you-tavsiye-a-java-kütüphane-okuma-ve-muhtemelen-yazma-csv-dosyaları/12504722 # 12504722) bir yıkım için. –