मैं फ़िल्टरप्रोवाइडर का उपयोग करता हूं। यह थोड़ा सा शामिल है, लेकिन बहुत कमजोर नहीं है।
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;
}
अन्य दृष्टिकोण और अधिक जानकारी के लिए, मैं निम्नलिखित संसाधनों की अनुशंसा करता हूं।
स्रोत
2011-11-23 05:27:52
एक आकर्षण की तरह काम करता है :) जैक्सन डॉक्स में सुधार के लिए जगह का एक बहुत नहीं है। – DAN
रुचि के लिए, मैंने नाम से गुणों को फ़िल्टर करने के लिए आवश्यक कॉन्फ़िगरेशन को सरल बनाने के लिए http://jira.codehaus.org/browse/JACKSON-724 पर एक वृद्धि अनुरोध लॉग किया है। –
@DAN बिल्कुल! योगदान दस्तावेज़ीकरण के लिए विशेष रूप से स्वागत है! (अच्छे लेखों के लिंक सहित, विकी अपडेट) – StaxMan