将java对象列表转换为CSV

将java对象列表转换为CSV,java,list,csv,object,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")); c

我有一个对象列表,对象中有许多值,这些值来自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(inti=0;i主要的问题似乎是,对于循环的每次迭代,您都会打开一个新文件move

CSVWriter csvWriter = new CSVWriter(new FileWriter("example.csv"));
在循环的
之前

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"});
   }
} //end for loop

 csvWriter.close();
并在
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"});
   }
} //end for loop

 csvWriter.close();

感谢Joakim,它帮助了我。现在我有了另一个简单的问题,在XML之外,它可能会发生。在这种情况下,我得到了空指针异常。因此,我尝试使用以下方法解决这个问题:if(iit.getcenter().getIds()==null){iit.getcenter().getIds()=“数据未填充”;}如果对象为空,则填充文本“数据未填充”在csv中。但是,通过这样的代码atempt,我得到了一个错误:赋值的左侧必须是一个变量。请问我如何修复空指针异常?@bennes您得到错误是因为
getIds()
是一种方法,因此您无法为其分配任何内容。请在if中使用局部变量,并为其指定
getIds
的值或您拥有的字符串,然后在
writeNext
调用中使用该变量。或者更改
getIds
以返回“未填充的数据”我为我的noob问题而不是nullHi-Joakim感到抱歉:(但当我尝试:String hu=iit.getcenter().getIds().toString();if(hu==null){hu=“data not filled”;}我在第一行得到了NullPointer异常(String hu=iit.getcenter().getIds().toString()):(其他建议也失败了,我做错了什么:)当你知道getid可能返回null时,为什么要做toString()?首先检查
if
if
getIds()
returnnull,然后相应地采取行动。
if(iit.getcenter().getIds()==null){hu=…}否则{…}
是的,问题也是iit.getcenter().可能为空,现在已修复。一切正常,非常感谢Joakim,祝您愉快:)