func (o *FindProjectDataOKBody) Validate(formats strfmt.Registry) error {
	var res []error
	if err := o.SearchResult.Validate(formats); err != nil {
		res = append(res, err)
	}
	if err := o.validateData(formats); err != nil {
		res = append(res, err)
	}
	if len(res) > 0 {
		return errors.CompositeValidationError(res...)
	}
	return nil
}
Validate validates this find project data o k body
package operations
import (
	"net/http"
	"strconv"
	errors "github.com/go-openapi/errors"
	middleware "github.com/go-openapi/runtime/middleware"
	strfmt "github.com/go-openapi/strfmt"
	swag "github.com/go-openapi/swag"
	models "github.com/MontFerret/ferret-server/server/http/api/models"
)
type FindProjectDataHandlerFunc func(FindProjectDataParams) middleware.Responder
func (fn FindProjectDataHandlerFunc) Handle(params FindProjectDataParams) middleware.Responder {
	return fn(params)
}
type FindProjectDataHandler interface {
	Handle(FindProjectDataParams) middleware.Responder
}
func NewFindProjectData(ctx *middleware.Context, handler FindProjectDataHandler) *FindProjectData {
	return &FindProjectData{Context: ctx, Handler: handler}
}
type FindProjectData struct {
	Context *middleware.Context
	Handler FindProjectDataHandler
}
func (o *FindProjectData) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
	route, rCtx, _ := o.Context.RouteInfo(r)
	if rCtx != nil {
		r = rCtx
	}
	var Params = NewFindProjectDataParams()
	if err := o.Context.BindValidRequest(r, route, &Params); err != nil {  
		o.Context.Respond(rw, r, route.Produces, route, err)
		return
	}
	res := o.Handler.Handle(Params)  
	o.Context.Respond(rw, r, route.Produces, route, res)
}
type FindProjectDataOKBody struct {
	models.SearchResult
	Data []*models.DataOutput `json:"data"`
}
func (o *FindProjectDataOKBody) UnmarshalJSON(raw []byte) error {
	var findProjectDataOKBodyAO0 models.SearchResult
	if err := swag.ReadJSON(raw, &findProjectDataOKBodyAO0); err != nil {
		return err
	}
	o.SearchResult = findProjectDataOKBodyAO0
	var dataFindProjectDataOKBodyAO1 struct {
		Data []*models.DataOutput `json:"data"`
	}
	if err := swag.ReadJSON(raw, &dataFindProjectDataOKBodyAO1); err != nil {
		return err
	}
	o.Data = dataFindProjectDataOKBodyAO1.Data
	return nil
}
func (o FindProjectDataOKBody) MarshalJSON() ([]byte, error) {
	_parts := make([][]byte, 0, 2)
	findProjectDataOKBodyAO0, err := swag.WriteJSON(o.SearchResult)
	if err != nil {
		return nil, err
	}
	_parts = append(_parts, findProjectDataOKBodyAO0)
	var dataFindProjectDataOKBodyAO1 struct {
		Data []*models.DataOutput `json:"data"`
	}
	dataFindProjectDataOKBodyAO1.Data = o.Data
	jsonDataFindProjectDataOKBodyAO1, errFindProjectDataOKBodyAO1 := swag.WriteJSON(dataFindProjectDataOKBodyAO1)
	if errFindProjectDataOKBodyAO1 != nil {
		return nil, errFindProjectDataOKBodyAO1
	}
	_parts = append(_parts, jsonDataFindProjectDataOKBodyAO1)
	return swag.ConcatJSON(_parts...), nil
}