当前位置: 首页 > 面试题库 >

如何将对象序列化为CSV文件?

常英资
2023-03-14
问题内容

我想将一个对象写入CSV文件。对于XML,我们有XStream的像这样 所以,如果我想转换对象CSV我们是否有任何这样的图书馆吗?

编辑: 我想将我的Bean列表传递给应该将Bean的所有字段都写入CSV的方法


问题答案:

首先,序列化是将对象“按原样”写入文件。AFAIK,您不能选择文件格式和全部。序列化的对象(在文件中)具有自己的“文件格式”

如果要将对象(或对象列表)的内容写入CSV文件,则可以自己完成,这并不复杂。

看起来Java CSV库可以做到这一点,但是我自己还没有尝试过。

编辑 :请参阅以下示例。这绝不是万无一失的,但是您可以在此基础上构建。

    //European countries use ";" as 
    //CSV separator because "," is their digit separator
    private static final String CSV_SEPARATOR = ",";
    private static void writeToCSV(ArrayList<Product> productList)
    {
        try
        {
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("products.csv"), "UTF-8"));
            for (Product product : productList)
            {
                StringBuffer oneLine = new StringBuffer();
                oneLine.append(product.getId() <=0 ? "" : product.getId());
                oneLine.append(CSV_SEPARATOR);
                oneLine.append(product.getName().trim().length() == 0? "" : product.getName());
                oneLine.append(CSV_SEPARATOR);
                oneLine.append(product.getCostPrice() < 0 ? "" : product.getCostPrice());
                oneLine.append(CSV_SEPARATOR);
                oneLine.append(product.isVatApplicable() ? "Yes" : "No");
                bw.write(oneLine.toString());
                bw.newLine();
            }
            bw.flush();
            bw.close();
        }
        catch (UnsupportedEncodingException e) {}
        catch (FileNotFoundException e){}
        catch (IOException e){}
    }

这是产品(为便于阅读,隐藏了获取器和设置器):

class Product
{
    private long id;
    private String name;
    private double costPrice;
    private boolean vatApplicable;
}

这就是我测试的方式:

public static void main(String[] args)
{
    ArrayList<Product> productList = new ArrayList<Product>();
    productList.add(new Product(1, "Pen", 2.00, false));
    productList.add(new Product(2, "TV", 300, true));
    productList.add(new Product(3, "iPhone", 500, true));
    writeToCSV(productList);
}

希望这可以帮助。

干杯。



 类似资料:
  • 问题内容: 我需要将一些对象序列化为JSON并发送到WebService。如何使用org.json库?否则我将不得不使用另一个?这是我需要序列化的类: 我只放了类的变量和构造函数,但也有getter和setter方法。所以如果有人可以帮忙 问题答案: 没有注释的简单方法是使用Gson库 就那么简单:

  • 问题内容: 使用时 从其派生的类型的对象上抛出异常。如何规避呢? 问题答案: 由于找不到合适的解决方案,因此我编写了自己的解决方案,它不是一个JSON序列化器,而是一个Javascript序列化器

  • 问题内容: 我有一个Java库,我想将一个Java对象的实例保存到文本文件中。我尝试使用所有Java库对XML进行序列化和反序列化:但是反序列化不起作用。我在这里发布了一个问题:但是看来我无法为此找到解决方案。 我也尝试过序列化到json ,但是从json反序列化不起作用。 因此,我想知道,还有其他方法可以从Java对象(无法修改以添加标签:)到文本文件进行序列化和反序列化吗? 提前致谢! 问题答

  • 问题内容: 我很高兴使用Newtonsoft JSON库。例如,我将从.NET对象创建一个,在这种情况下为Exception的实例(可能是子类,也可能不是子类) 现在我知道该库可以将JSON文本(即字符串)反序列化为对象 但我正在寻找的是: 显然,我可以从头回到JSON文本,然后使用反序列化功能,但这对我来说似乎是倒退的。 问题答案: 根据这篇文章,现在好多了: 文档: 将JSON转换为类型

  • 问题内容: 如何在JavaScript中将对象序列化为JSON? 问题答案: 您正在寻找。

  • 有没有办法将一般对象序列化为Json并将Json反序列化为对象<如果对象是一个实体,我可以使用Jackson 2库来实现这个目的<但是如果对象是一个普通类,我该怎么做呢? 例如,我想序列化com.datastax.driver.core.querybuilder。将更新为Json并保存到DB,然后搜索并反序列化它以更新对象,最后将其用作com.datastax.driver.core.Sessio