东营网站seo,wordpress代码板插件下载,wordpress用户权限在哪改,网站开发培训班 上地Super CSV是读取/解析#xff0c;验证和映射CSV文件到POJO的绝佳选择#xff01;我们(Super CSV团队)刚刚发布了一个新版本(您可以从SourceForge或Maven下载它)。读取CSV文件以下示例使用read()(我们刚刚发布的新阅读器#xff0c;使用Dozer进行具有深度映射和基于索引的映射…Super CSV是读取/解析验证和映射CSV文件到POJO的绝佳选择我们(Super CSV团队)刚刚发布了一个新版本(您可以从SourceForge或Maven下载它)。读取CSV文件以下示例使用read()(我们刚刚发布的新阅读器使用Dozer进行具有深度映射和基于索引的映射支持的Bean映射)-该示例基于我们网站上的示例。 如果不需要推土机功能(或者只需要简单的独立依赖项)则可以改用null(请参见此代码示例)。CSV文件示例这是一个示例CSV文件代表对调查的答复。 它有一个标题和3行数据所有行都有8列。age,consentGiven,questionNo1,answer1,questionNo2,answer2,questionNo3,answer318,Y,1,Twelve,2,Albert Einstein,3,Big Bang Theory,Y,1,Thirteen,2,Nikola Tesla,3,Stargate42,N,1,,2,Carl Sagan,3,Star Wars定义从CSV到POJO的映射CSV的每一行都将被读入SurveyResponse类每个类都有一个“答案列表”。 为了使映射起作用您的类应该是有效的Javabeans(即具有默认的no-arg构造函数并为每个字段定义了getter / setter)。在Super CSV中您可以使用简单的String数组定义映射-数组的每个元素都对应于CSV文件中的一列。使用read()您可以使用简单字段映射(例如read())深度映射(例如read())索引映射(例如read()-数组或集合的从零开始的索引)深度索引映射(例如read())以下是此示例的字段映射-它使用了这些的组合private static final String[] FIELD_MAPPING new String[] {age, // simple field mapping (like for CsvBeanReader)consentGiven, // as aboveanswers[0].questionNo, // indexed (first element) deep mappinganswers[0].answer,answers[1].questionNo, // indexed (second element) deep mappinganswers[1].answer,answers[2].questionNo,answers[2].answer };转换和验证超级CSV具有有用的单元处理器库可用于将字符串从CSV文件转换为其他数据类型(例如日期整数)或进行约束验证(例如强制/可选正则表达式匹配范围检查) 。使用单元处理器是完全可选的-没有它们CSV的每一列都将是一个字符串因此每个字段也必须是一个字符串。以下是该示例的单元处理器配置。 与字段映射一样数组中的每个元素都代表一个CSV列。 它演示了单元处理器如何将CSV数据转换为您字段的数据类型以及如何将它们链接在一起。final CellProcessor[] processors new CellProcessor[] {new Optional(new ParseInt()), // agenew ParseBool(), // consentnew ParseInt(), // questionNo 1new Optional(), // answer 1new ParseInt(), // questionNo 2new Optional(), // answer 2new ParseInt(), // questionNo 3new Optional() // answer 3};阅读使用Super CSV进行读取非常灵活您可以提供自己的read()(以便您可以从文件类路径zip文件等中读取内容)并且可以通过首选项配置定界符和引号字符(其中有很多 满足大多数用途的预定义配置)。下面的代码是不言自明的。创建阅读器(带有read()和首选项)(可选)阅读标题配置bean映射继续拨打read()直到得到null(文件末尾)关闭阅读器码ICsvDozerBeanReader beanReader null;try {beanReader new CsvDozerBeanReader(new FileReader(CSV_FILENAME),CsvPreference.STANDARD_PREFERENCE);beanReader.getHeader(true); // ignore the headerbeanReader.configureBeanMapping(SurveyResponse.class, FIELD_MAPPING);SurveyResponse surveyResponse;while( (surveyResponse beanReader.read(SurveyResponse.class, processors)) ! null ) {System.out.println(String.format(lineNo%s, rowNo%s, surveyResponse%s,beanReader.getLineNumber(), beanReader.getRowNumber(),surveyResponse));}} finally {if( beanReader ! null ) {beanReader.close();}}输出lineNo2, rowNo2, surveyResponseSurveyResponse [age18, consentGiventrue, answers[Answer [questionNo1, answerTwelve], Answer [questionNo2, answerAlbert Einstein], Answer [questionNo3, answerBig Bang Theory]]]lineNo3, rowNo3, surveyResponseSurveyResponse [agenull, consentGiventrue, answers[Answer [questionNo1, answerThirteen], Answer [questionNo2, answerNikola Tesla], Answer [questionNo3, answerStargate]]]lineNo4, rowNo4, surveyResponseSurveyResponse [age42, consentGivenfalse, answers[Answer [questionNo1, answernull], Answer [questionNo2, answerCarl Sagan], Answer [questionNo3, answerStar Wars]]]更多信息您可以在网站上找到更多信息