2011-02-02 3 views
0

J'essaie d'utiliser SOJO pour sérialiser un objet Java en CSV. L'exemple semble assez simple:Java SOJO CSV Sérialisation

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 

J'ai essayé d'implémenter ma propre version de l'exemple. J'ai fait une classe Car très simple avec deux champs String (build et description) qui implémente une méthode setDescription(..).

C'est ce que je mis en œuvre:

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); 
} 

} 

Cependant, quand je lance mon application, je reçois la sortie suivante:

~unique-id~,class,description 
0,Main$Car, 

Je ne comprends pas pourquoi dans ma mise en œuvre ni le build ou description les champs sont sérialisés, pouvez-vous aider?

Cheers,

Pete

Répondre

0

Je ne l'ai pas utilisé SOJO, mais pour les champs privés dont vous avez besoin probablement des méthodes de lecture; ou vous pourriez essayer de déclarer les champs publics.

+0

Ajout d'accesseur et de mutateurs travaillés! – Peter

0

A partir de la page d'accueil SOJO: « L'intention de ce projet est un framework Java, qui convertissent JavaBeans dans une représentation simplifiée »

L'objet Car dans votre exemple ne se qualifie pas. Vous devez avoir un getter (et, probablement, un setter aussi) pour chaque propriété que SOJO souhaite écrire (ou lire) dans votre fichier. Ajouter getBuild() et getDescription()