2017-04-14 27 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每个类是不是很优美,任何想法,我可以做到这一点更合理? –