2015-03-27 6 views
0

Я просто не могу понять, что не так в следующем фрагменте кода. Он не выводит поле даты в виде строки. Я googled и обнаружил, что люди делают то же самое, и они получают желаемый результат. Не хватает ли какой-либо дополнительной конфигурации? Пожалуйста помоги.Невозможно реализовать пользовательский JSON-сериализатор с Jackson и Spring Boot

package hello; 

import java.io.IOException; 
import java.util.Date; 

import org.codehaus.jackson.JsonGenerationException; 
import org.codehaus.jackson.JsonGenerator; 
import org.codehaus.jackson.map.JsonSerializer; 
import org.codehaus.jackson.map.SerializerProvider; 
import org.codehaus.jackson.map.annotate.JsonSerialize; 
import org.springframework.web.bind.annotation.ResponseBody; 
import org.springframework.web.bind.annotation.RestController; 
import org.springframework.web.bind.annotation.RequestMapping; 

@RestController 
public class HelloController { 

    @RequestMapping("/test") 
    public @ResponseBody Client getClient() { 
     System.out.println("heeeeee"); 
     return new Client(); 
    } 

} 

class Client { 

    @JsonSerialize(using = CustomDateSerializer.class) 
    private Date d = new Date(); 

    @JsonSerialize(using = CustomDateSerializer.class) 
    public Date getD() { 
     System.out.println("CP 2"); 
     return d; 
    } 

    public void setD(Date d) { 
     this.d = d; 
    } 

} 

class CustomDateSerializer extends JsonSerializer<Date> { 

    @Override 
    public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) 
      throws IOException, JsonGenerationException { 

     System.out.println("CP 0"); 

     //SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT'ZZZ (z)"); 
     //String format = formatter.format(value); 
     //jgen.writeString(format); 
     jgen.writeString("asdfasfdasdfasdf asdlkfja sdfljasd flkasdjf"); 
    } 

} 
+0

Вам нужно будет зарегистрировать собственный сериализатор с классом сопоставления. Можете ли вы поделиться тем, как вы определили карту? –

+0

Как зарегистрировать пользовательский сериализатор с классом mapper .. как в этом приложении я не использовал явное объявление или инициализацию mapper. – dopeddude

+0

atleast делится тем, как вы определили jackson как поставщика json? поэтому я могу предоставить больше целевого soln. –

ответ

2

Вы используете org.codehaus.jackson библиотеку. Попробуйте это com.fasterxml.jackson. Решите same problem.

Смежные вопросы