Tôi muốn sử dụng Trình lọc. Đó là một chút tham gia, nhưng không quá khó sử dụng.
import org.codehaus.jackson.annotate.JsonAutoDetect.Visibility;
import org.codehaus.jackson.annotate.JsonMethod;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.ObjectWriter;
import org.codehaus.jackson.map.annotate.JsonFilter;
import org.codehaus.jackson.map.ser.FilterProvider;
import org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter;
import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider;
public class JacksonFoo
{
public static void main(String[] args) throws Exception
{
Bar bar = new Bar();
bar.id = "42";
bar.name = "James";
bar.color = "blue";
bar.foo = new Foo();
bar.foo.id = "7";
bar.foo.size = "big";
bar.foo.height = "tall";
ObjectMapper mapper = new ObjectMapper().setVisibility(JsonMethod.FIELD, Visibility.ANY);
System.out.println(mapper.writeValueAsString(bar));
// output:
// {"id":"42","name":"James","color":"blue","foo":{"id":"7","size":"big","height":"tall"}}
String[] ignorableFieldNames = { "id", "color" };
FilterProvider filters = new SimpleFilterProvider().addFilter("filter properties by name", SimpleBeanPropertyFilter.serializeAllExcept(ignorableFieldNames));
mapper = new ObjectMapper().setVisibility(JsonMethod.FIELD, Visibility.ANY);
mapper.getSerializationConfig().addMixInAnnotations(Object.class, PropertyFilterMixIn.class);
ObjectWriter writer = mapper.writer(filters);
System.out.println(writer.writeValueAsString(bar));
// output:
// {"name":"James","foo":{"size":"big","height":"tall"}}
}
}
@JsonFilter("filter properties by name")
class PropertyFilterMixIn
{
}
class Bar
{
String id;
String name;
String color;
Foo foo;
}
class Foo
{
String id;
String size;
String height;
}
Để biết các cách tiếp cận khác và thông tin khác, tôi khuyên bạn nên sử dụng các tài nguyên sau.
Nguồn
2011-11-23 05:27:52
trình như một say mê :) Có rất nhiều chỗ cho sự cải tiến trong các tài liệu Jackson. – DAN
Đối với những người quan tâm, tôi đã đăng nhập một yêu cầu nâng cao tại http://jira.codehaus.org/browse/JACKSON-724 để đơn giản hóa cấu hình cần thiết để lọc các thuộc tính theo tên. –
@DAN Tuyệt đối! Đóng góp được đặc biệt hoan nghênh cho tài liệu! (bao gồm các liên kết đến các bài viết hay, cập nhật wiki) – StaxMan