2016-05-31 21 views
2

我试图将Foo序列化为String。这似乎是一个非常简单的任务,但由于某种原因DateTime似乎打破了它。JsonGenerationException:CSV生成器不支持属性的对象值

Test.java

import com.fasterxml.jackson.dataformat.csv.CsvMapper; 
import com.fasterxml.jackson.dataformat.csv.CsvSchema; 
import java.io.IOException; 
import java.sql.Timestamp; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import org.joda.time.DateTime; 

public class Test { 

    public static void main(String args[]) { 
     try { 
      List<Foo> foos = new ArrayList<>(); 
      Foo foo = new Foo(); 
      foo.setID(1); 
      foo.setCURRENT(new DateTime(new Timestamp(System.currentTimeMillis()))); 
      foos.add(foo); 
      String content = serialize(foos, Foo.class, Boolean.TRUE); 
      System.out.println(content); 
     } catch (IOException ex) { 
      Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

    public static final synchronized String serialize(final Object object, final Class type, final Boolean withHeaders) throws IOException { 
     CsvMapper csvMapper = new CsvMapper(); 
     CsvSchema csvSchema; 
     if (withHeaders) { 
      csvSchema = csvMapper.schemaFor(type).withHeader(); 
     } else { 
      csvSchema = csvMapper.schemaFor(type).withoutHeader(); 
     } 
     return csvMapper.writer(csvSchema).writeValueAsString(object); 
    } 

} 

Foo.java

import org.joda.time.DateTime; 

public class Foo { 

    private Integer ID; 
    private DateTime CURRENT; 

    public Foo() { 
    } 

    public Integer getID() { 
     return ID; 
    } 

    public void setID(Integer ID) { 
     this.ID = ID; 
    } 

    public DateTime getCURRENT() { 
     return CURRENT; 
    } 

    public void setCURRENT(DateTime CURRENT) { 
     this.CURRENT = CURRENT; 
    } 

} 

,我用我的Foo对象@JsonGetter@JsonSetter尝试,但它并没有真正产生任何影响。

什么是造成此错误?

回答

1

您是否包含Joda DateTime的数据类型模块?你需要的是jackson-datatype-joda,从https://github.com/FasterXML/jackson-datatype-joda。如果不是,那就可以解释这个问题,因为值会被看作是常规的POJO,而且对于没有某种映射到虚线符号的嵌套数据而言,CSV并不好。

相关问题