2014-10-09 51 views
0

這是我有:春@RequestMapping解串器

SomeController.java

@Controller 
@RequestMapping(value = "/foo", produces = MediaType.APPLICATION_JSON_VALUE) 
public class SomeController { 
    @RequestMapping(value = "/bar", method = RequestMethod.POST) 
    public @ResponseBody ResponseEntity<Resource<Baz>> createCampaign(@RequestBody Foobar foobar) { 
     ... 
    } 
} 

現在,我需要使用自定義JsonDeserialiserfoobar,但僅限於該特定端點,每隔端點爲Foobar,因爲其@RequestBody應使用默認值。這怎麼能實現?

+0

難道你不能在序列化之後用Foobar中的數據進行調整嗎? – luboskrnac 2014-10-09 07:09:21

回答

0

我無法想象用另一種方式做事手動。讓您的請求主體爲純字符串,叫你定製JsonDeserializer它:

public @ResponseBody ResponseEntity<Resource<Baz>> createCampaign(@RequestBody String body) { 
    //do your custom deserialization 
} 
0

如何不同的是這種情況下的反序列化在比較其他的呢?

您正在使用哪個版本的Jackson?傑克遜2使反序列化非常酷的東西。

第一個選項,你可以使用Jackson Builder,定製

@JsonDeserialize(builder = FooBarBuilder.class) 
public class FooBar { 
    ... 
    public static class FooBarBuilder() { 
     public FooBar build(){...} 
    } 
} 

第二種選擇,如果您的實際FooBar的是看到Handling polymorphic types的亞型,以解決您的類的實際實例。

希望它有幫助!