2017-04-14 55 views
0

指定字段連載爲了我有一個名爲Test類擴展名爲BasicTest另一個類,這個類是象下面這樣:我怎麼能在傑克遜

public class Test extends BasicTest{ 
    private String name; 
    private Integer age; 

    // ... Getter and Setter 
} 

public class BasicTest{ 
    private String code; 
    private Long time; 

    // ... Getter and Setter 
} 

我用的球衣,以提供RESTful API,因此這裏是端點的代碼:

@Path("/test") 
public class MyEndpoint{ 
    @Get 
    @Produce(MediaType.APPLICATION_JSON) 
    public Test myTest(){ 
      Test test = new Test(); 
      test.setName("Chris"); 
      test.setAge(29); 
      test.setCode("200"); 
      test.setTime(100) 
      return test; 
    } 
} 

我期待什麼反應是:

{ 
    "name": "Chris", 
    "age": 28, 
    "code": "200", 
    "time": 100 
} 

但我得到:

{ 
    "code":"200", 
    "time":100, 
    "name":"Chris", 
    "age":28 
} 

我的傑克遜對象映射提供程序配置爲:

public class ObjectMapperProvider implements ContextResolver<ObjectMapper> { 
final ObjectMapper defaultObjectMapper; 

public ObjectMapperProvider() { 
    defaultObjectMapper = createDefaultMapper(); 
} 

@Override 
public ObjectMapper getContext(Class<?> type) { 
    return defaultObjectMapper; 
} 

private static ObjectMapper createDefaultMapper() { 
    final ObjectMapper result = new ObjectMapper(); 
    //enable 
    result.enable(SerializationFeature.INDENT_OUTPUT); 

    //disable 
    result.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); 
    result.disable(SerializationFeature.WRITE_NULL_MAP_VALUES); 
    result.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); 

    //include 
    result.setSerializationInclusion(JsonInclude.Include.NON_NULL); 

    result.configure(MapperFeature.USE_ANNOTATIONS, true); 

    //Naming 
    result.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); 

    return result; 
} 

}

希望有人能夠幫助檢查這一點,我怎樣才能得到我預期的反應,真的很感謝:)

回答

0

您可以使用@JsonPropertyOrder註釋在序列化時設置屬性順序,如下所示。

@JsonPropertyOrder({"name","age","code","time"}) 
public class Test extends BasicTest{ 
    private String name; 
    private Integer age; 

    // ... Getter and Setter 
} 
+0

謝謝您的回答,這就是我做測試的例子中,真正的代碼我有很多的類來擴展BasicTest類,我想用@JsonPropertyOrder每個類是不是很優美,任何想法,我可以做到這一點更合理? –