2017-11-30 17 views
2

にコンテンツプロパティを追加すると、それは同じように、オブジェクトが返さwrapps「内容」プロパティを追加します。私は春のデータ、残りのカスタム・シリアライザを使用するたびにシリアライズ

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

EDIT:コンフィギュレーション・クラスを追加

@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(); 
      } 

     } 
    } 
} 

しかし、カスタムのシリアライザを使用せずにスプリングデータの残りのシリアル化を使用すると、プロパティは挿入されません。

このプロパティが表示されないようにするにはどうすればよいですか?

+0

はあなたが作業しているカスタムシリアライザの1の例を投稿することができ、そしてどのようにそれはあなたのコードに適用されるのですか?あなたは何とかHATEOAS json形式に変換されているようです。 –

+0

@NickDeFazioシリアライザのコンフィグレーションクラスを投稿しました –

+1

@NickDeFazio実際には、春データレストはHATEOASを使用しています。シリアライザを指定しないと、SpringはPersistentEntityResourceをシリアライズします。PersistentEntityResourceは最後にhateoasしかし、コンテンツプロパティは、私がカスタムシリアライザを使用する場合にのみ挿入されます –

答えて