من الممكن تكوين Mapper Jackson-Json لاستبعاد الخصائص بناءً على الكائن الذي يتم تسلسله؟

StackOverflow https://stackoverflow.com/questions/2507768

  •  22-09-2019
  •  | 
  •  

سؤال

لنفترض أن لديّ أشياء مثل الأعمال التجارية مع قائمة كائنات العنوان ، وأمر له عمل تجاري.

هل من الممكن تكوينه بحيث يتم تسلسل الطلب ، فهو يستبعد قائمة العناوين من كائن العمل ، وعندما يتم تسلسل العمل ، فإنه يتضمن القائمة؟

أنا أستخدم AJAX لسحب البيانات لـ RIA وعند العمل مع الطلب ، لا أهتم حقًا ببيانات العنوان ، ولكن عند التعامل مع الأعمال التجارية ، أريد القائمة.

أنا أيضًا أستخدم السبات من أجل الثبات ، لذا فهذا حقًا هو تحسين الكفاءة وتحسين الأداء.

هل كانت مفيدة؟

المحلول

إذا فهمت السؤال بشكل صحيح ، نعم ، أعتقد آراء JSON لجاكسون سوف يسمح هذا. يمكنك إنشاء عرضين مختلفين (ملفات تعريف) لنفس النوع ، واختيار أي واحد لاستخدامه للتسلسل.

نصائح أخرى

يمكنك استخدام التعليق التوضيحي Jsonignore لتجاهل تبوك قائمة في التسلسل وإيقاف استخدام التعليقات التوضيحية في ObjectMapperSerializationConfig عند تسلسل أ اعمال. بالطبع ، هذا يعني أنه يتم تجاهل التعليقات التوضيحية الأخرى التي قد تستخدمها أيضًا. ليست مثالية ، ولكن قد تجد حلًا أفضل يبحث في هذا ، آمل أن يساعد (من الواضح).

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"
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top