我正在尝试使用SOJO将Java对象序列化为CSV。这个例子看起来非常简单:
Car car = new Car("My Car");
car.setDescription("This is my car.");
Serializer csvSerializer = new CsvSerializer();
String csvStr = (String) csvSerializer.serialize(car);
System.out.println(csvStr);
// print:
// description,build,properties,name,~unique-id~,class
// This is my car.,,,My Car,0,test.net.sf.sojo.model.Car我尝试实现了我自己的示例版本。我创建了一个非常简单的Car类,其中包含两个String字段(build和description),它实现了一个setDescription(..)方法。
这就是我所实现的:
import net.sf.sojo.interchange.csv.CsvSerializer;
public class Main {
private class Car
{
private String build;
private String description;
public Car(String build) {
this.build = build;
this.description = null;
}
public void setDescription(String description) {
this.description = description;
}
}
public static void main(String[] args) {
Main m = new Main();
Car car = m.new Car("My Car");
car.setDescription("This is my car.");
CsvSerializer csvSerializer = new CsvSerializer();
String csvStr = (String) csvSerializer.serialize(car);
System.out.println(csvStr);
}
}然而,当我运行我的实现时,我得到了以下输出:
~unique-id~,class,description
0,Main$Car,我不明白为什么在我的实现中build和description字段都没有被序列化,你能帮上忙吗?
干杯,
皮特
发布于 2011-02-03 01:29:23
我没有使用过SOJO,但是对于私有字段,您可能需要getter方法;或者您可以尝试将字段声明为public。
发布于 2011-02-03 01:41:37
来自SOJO主页:“这个项目的目的是一个Java框架,它将JavaBeans转换为简化的表示形式。”
示例中的Car对象不符合条件。对于希望SOJO写入(或读取)文件的每个属性,都必须有一个getter (可能还有setter )。添加getBuild()和getDescription()
https://stackoverflow.com/questions/4877579
复制相似问题