java - 将java对象列表转换为CSV

标签 java list csv object

我有一个对象列表,其中包含来自 XML 源的对象中的许多值:

iit.getHomeCurrency().getPrice().toString()

如果我把 System.out.println(iit.getHomeCurrency().getPrice().toString()); 我成功获得了完整的对象列表。

但是,当我想将此对象转换为 CSV 时,使用

CSVWriter csvWriter = new CSVWriter(new FileWriter("example.csv"));
csvWriter.writeNext(new String[]{iit.getHomeCurrency().getPrice().toString(),"/n"} 
csvWriter.close();

我在 csv 文件中只有一行:(

代码:

for(int i=0;i<contentElement.size();i++){
            JAXBElement<ListInvoiceType> invoiceTypeElement = (JAXBElement<ListInvoiceType>) contentElement.get(i);
            ListInvoiceType listInvoiceType = invoiceTypeElement.getValue();
            List<InvoiceType> invoiceTypeList = listInvoiceType.getInvoice();
            for(InvoiceType invoiceType:invoiceTypeList ){
                InvoiceHeaderType invoiceHeaderType = invoiceType.getInvoiceHead
er();
                InvoiceDetailType invoiceDetailType = invoiceType.getInvoiceDetail();                       

                InvoiceItemType iit = null;
                InvoiceAdvancePaymentItemType iapit = null;
                for(Serializable s:invoiceDetailType.getContent()){
                    if(s instanceof JAXBElement) {
                        JAXBElement<?> element = (JAXBElement)s;
                        if(element.getValue() instanceof InvoiceItemType){
                            iit = (InvoiceItemType)element.getValue();
                        }
                        else if(element.getValue() instanceof InvoiceAdvancePaymentItemType){
                            iapit = (InvoiceAdvancePaymentItemType)element.getValue();
                        }
                        else{
                            throw new Exception("xx");
                        }
                    }

                    else if(s instanceof String){

                    }
                    else{
                        throw new Exception("xx");
                    }       


                        if(iit!=null){          
                        CSVWriter csvWriter = new CSVWriter(new FileWriter("example.csv"));

                        csvWriter.writeNext(new String[]{iit.getHomeCurrency().getPrice().toString(), iit.getCentre().getIds()  ,invoiceHeaderType.getDate().toString(),invoiceHeaderType.getInvoiceType().value(),"\r\n"});

                        csvWriter.close();

我应该改变什么才能让java将每个对象写入csv文件的新行?

谢谢

最佳答案

主要问题似乎是您为循环的每次迭代打开一个新文件,移动

CSVWriter csvWriter = new CSVWriter(new FileWriter("example.csv"));

for 循环之前

CSVWriter csvWriter = new CSVWriter(new FileWriter("example.csv"));
for(Serializable s:invoiceDetailType.getContent()){
    if(s instanceof JAXBElement) {
        //... 
    }

   if( iit !=n ull){          
       csvWriter.writeNext(new String[]{iit.getHomeCurrency().getPrice().toString(), iit.getCentre().getIds()  ,invoiceHeaderType.getDate().toString(),invoiceHeaderType.getInvoiceType().value(),"\r\n"});
   }

并在for循环后关闭文件

} //end for loop

 csvWriter.close();

关于java - 将java对象列表转换为CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54204671/

相关文章:

java - IntelliJ - java.lang.NoClassDefFoundError : net/jodah/failsafe/Policy

Java 访问修饰符

java - hadoop - 我们可以在完成 mapreduce 作业后检查状态多长时间?

css - 这是我的样式表中的内容 li {display :inline; } li. vert (color :red;} How do I get li. vert to display vertically

r - 如何创建列表列表,然后对其执行矢量化函数

python - 函数 np.interp 和 pandas Python 出错

java - 当我尝试比较数据库中的值和编辑文本输入时,出现 NullPointerException

java - 如何使用通配符作为类型对空列表使用react?

parsing - 解析制表符分隔的字符串

r - 修剪一个巨大的 (3.5 GB) csv 文件以读入 R