من الممكن تكوين Mapper Jackson-Json لاستبعاد الخصائص بناءً على الكائن الذي يتم تسلسله؟
سؤال
لنفترض أن لديّ أشياء مثل الأعمال التجارية مع قائمة كائنات العنوان ، وأمر له عمل تجاري.
هل من الممكن تكوينه بحيث يتم تسلسل الطلب ، فهو يستبعد قائمة العناوين من كائن العمل ، وعندما يتم تسلسل العمل ، فإنه يتضمن القائمة؟
أنا أستخدم AJAX لسحب البيانات لـ RIA وعند العمل مع الطلب ، لا أهتم حقًا ببيانات العنوان ، ولكن عند التعامل مع الأعمال التجارية ، أريد القائمة.
أنا أيضًا أستخدم السبات من أجل الثبات ، لذا فهذا حقًا هو تحسين الكفاءة وتحسين الأداء.
المحلول
إذا فهمت السؤال بشكل صحيح ، نعم ، أعتقد آراء JSON لجاكسون سوف يسمح هذا. يمكنك إنشاء عرضين مختلفين (ملفات تعريف) لنفس النوع ، واختيار أي واحد لاستخدامه للتسلسل.
نصائح أخرى
يمكنك استخدام التعليق التوضيحي Jsonignore لتجاهل تبوك قائمة في التسلسل وإيقاف استخدام التعليقات التوضيحية في ObjectMapper'س SerializationConfig عند تسلسل أ اعمال. بالطبع ، هذا يعني أنه يتم تجاهل التعليقات التوضيحية الأخرى التي قد تستخدمها أيضًا. ليست مثالية ، ولكن قد تجد حلًا أفضل يبحث في هذا ، آمل أن يساعد (من الواضح).
ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().disable(Feature.USE_ANNOTATIONS);
نعم يمكنك ان تفعلها. كل ما تحتاجه هو إعلان قائمة العنوان كعقار عابر في كائن العمل الخاص بك.
ثم أضف الكود التالي إلى JsonConfig الخاص بك:
jsonConfig.setIgnoreTransientFields(true);
@JsonIgnore
يستخدم لتجاهل الخصائص التي لا تريد تحويلها إلى JSON.
public class UserDocument {
private long id;
private String documentUrl;
@JsonIgnore
private byte documentType;
//traditional getters and setters
}
الإخراج: سيؤدي ذلك إلى تحويل الخصائص هوية شخصية و DocumentUrl ولكن لن يحول الممتلكات نوع الوثيقة.
{
"id": 5,
"document_url": "/0/301115124948.jpg"
}