2017-11-30 5 views
2

Jedes Mal, wenn ich einen benutzerdefinierten Serializer im Frühjahr Daten Rest verwende, fügt es eine „Inhalt“ Eigenschaft, die das Objekt zurückgegeben, wie Wrapps:Inhalt Eigenschaft Serialisierung Hinzufügen

{ 
    "content":{ 
     object properties... 
    }, 
    _links: { 
    } 
} 

EDIT: In Konfigurationsklasse

@Configuration 
public class JacksonCustomizations { 

    @Bean 
    public Module rateModule() { 
     return new RateModule(); 
    } 

    @SuppressWarnings("serial") 
    static class RateModule extends SimpleModule { 

     public RateModule() { 
      setMixInAnnotation(Package.class, RateModule.PackageMixin.class); 
      setMixInAnnotation(Section.class, RateModule.SectionMixin.class); 
      setMixInAnnotation(MainPart.class, RateModule.MainPartMixin.class); 
      setMixInAnnotation(SubPart.class, RateModule.SubPartMixin.class); 

      addSerializer(MaintenanceTask.class, new MaintenanceTaskSerializer()); 

      addDeserializer(Package.class, new PackageDeserializer()); 
      addDeserializer(Section.class, new SectionDeserializer()); 
      addDeserializer(MainPart.class, new MainPartDeserializer()); 
      addDeserializer(MaintenanceTask.class, new MaintenanceTaskDeserializer()); 
     } 

     @JsonAutoDetect(fieldVisibility=Visibility.NONE, getterVisibility=Visibility.NONE, isGetterVisibility=Visibility.NONE) 
     static abstract class PackageMixin { 

      @JsonProperty("name") public abstract String getName(); 
      @JsonProperty("sections") public abstract List<Section> getSections(); 
     } 

     @JsonAutoDetect(fieldVisibility=Visibility.NONE, getterVisibility=Visibility.NONE, isGetterVisibility=Visibility.NONE) 
     static abstract class SectionMixin { 

      @JsonProperty("id") public abstract Long getId(); 
      @JsonProperty("name") public abstract String getName(); 
     } 

     @JsonAutoDetect(fieldVisibility=Visibility.NONE, getterVisibility=Visibility.NONE, isGetterVisibility=Visibility.NONE) 
     static abstract class MainPartMixin { 

      @JsonProperty("name") public abstract String getName(); 
      @JsonProperty("subparts") public abstract List<SubPart> getSubParts(); 
     } 

     @JsonAutoDetect(fieldVisibility=Visibility.NONE, getterVisibility=Visibility.NONE, isGetterVisibility=Visibility.NONE) 
     static abstract class SubPartMixin { 

      @JsonProperty("id") public abstract Long getId(); 
      @JsonProperty("name") public abstract String getName(); 
     } 

     static class MaintenanceTaskSerializer extends JsonSerializer<MaintenanceTask> { 

      @Override 
      public void serialize(final MaintenanceTask value, final JsonGenerator gen, final SerializerProvider serializers) 
        throws IOException, JsonProcessingException { 
       gen.writeStartObject(); 
       gen.writeNumberField("id", value.getId()); 
       gen.writeStringField("maintenanceRequirementId", value.getMaintenanceRequirementId()); 
       gen.writeStringField("type", value.getType().toString()); 
       gen.writeStringField("title", value.getTitle()); 
       gen.writeStringField("description", value.getDescription()); 
       gen.writeStringField("note", value.getNote()); 
       gen.writeStringField("effectivity", value.getEffectivity()); 
       gen.writeNumberField("procedureReference", value.getReferenceTask().getId()); 
       gen.writeNumberField("aircraftModel", value.getAircraftModel().getId()); 
       gen.writeNumberField("packageId", value.getPack().getId()); 
       gen.writeNumberField("sectionId", value.getSection().getId()); 
       gen.writeStringField("taskType", value.getTaskType().toString()); 
       gen.writeEndObject(); 
      } 

     } 
    } 
} 

Aber wenn ich Spring Data Serialisierung ohne benutzerdefinierte Serialisierer verwenden, wird die Eigenschaft nicht eingefügt.

Wie kann ich verhindern, dass diese Eigenschaft angezeigt wird?

+0

Können Sie ein Beispiel für eine der benutzerdefinierten Serializer Post mit dem Sie arbeiten, und wie es in Ihrem Code angewendet wird? Es sieht so aus, als ob Sie irgendwie in ein HATEOAS JSON-Format konvertiert werden. –

+0

@NickDeFazio Posted die Konfigurationsklasse für den Serializer –

+1

@NickDeFazio Tatsächlich verwendet Frühling Daten Rest HATEOAS, und es scheint, dass, wenn Sie keinen Serializer angeben, Spring eine PersistentEntityResourceSerializer serialisiert eine PersistentEntityResource, die schließlich eine Ressource-Klasse von hateoas ist , aber die content -Eigenschaft wird nur eingefügt, wenn ich einen benutzerdefinierten Serializer verwende –

Antwort

Verwandte Themen