[
https://issues.apache.org/jira/browse/CSV-65?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sebb resolved CSV-65.
---------------------
Resolution: Fixed
This seems to be complete
> Header support
> --------------
>
> Key: CSV-65
> URL: https://issues.apache.org/jira/browse/CSV-65
> Project: Commons CSV
> Issue Type: New Feature
> Components: Parser
> Reporter: Emmanuel Bourg
> Fix For: 1.0
>
> Attachments: CSVFormat.java, CSVParser.java, CSVRecord.java
>
>
> Commons CSV is missing some elements to help dealing with CSV file headers.
> With the current API one has to write the following code to read the fields
> by name:
> {code:java}
> CSVParser parser = new CSVParser(in);
> Iterator<String[]> it = parser.iterator();
> // read the header
> String[] header = it.next();
> // build a name to index mapping
> Map<String, Integer> mapping = new HashMap<>();
> for (int i = 0; i < header.length; i++) {
> mapping.put(header[i], i);
> }
> // parse the records
> for (String[] record : parser) {
> Person person = new Person();
> person.setName(record[mapping.get("name")]);
> person.setEmail(record[mapping.get("email")]);
> person.setPhone(record[mapping.get("phone")]);
> persons.add(person);
> }
> {code}
> The header should be defined in the format with something like this:
> {code:java}
> CSVFormat format = CSVFormat.DEFAULT.withHeader();
> {code}
> Then either the parser provides the column name to index mapping
> automatically:
> {code:java}
> CSVFormat format = CSVFormat.DEFAULT.withHeader();
> CSVParser parser = new CSVParser(in, format);
> // parse the records
> for (String[] record : parser) {
> Person person = new Person();
> person.setName(record[parser.indexOf("name")]);
> person.setEmail(record[parser.indexOf("email")]);
> person.setPhone(record[parser.indexOf("phone")]);
> persons.add(person);
> }
> {code}
> or the parser returns a Map like structure similar to a JDBC ResultSet
> (replacing String[]):
> {code:java}
> CSVFormat format = CSVFormat.DEFAULT.withHeader();
> for (CSVRecord record : format.parse(in)) {
> Person person = new Person();
> person.setName(record.get("name"));
> person.setEmail(record.get("email"));
> person.setPhone(record.get("phone"));
> persons.add(person);
> }
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira