code: func (d DecrypterJSON) Decrypt(object interface{}, decryptFunc DecryptFunc) (interface{}, error) {
  	if !d.IsEncrypted(object) {
  		return object, nil
  	}
  
  	inData := object.([]byte)
  	var jsonData map[string]interface{}
  	err := json.Unmarshal(inData, &jsonData)
  	if err != nil {
  		return nil, err
  	}
  
  	err = d.decryptJSON(jsonData, decryptFunc)
  	if err != nil {
  		return nil, err
  	}
  
  	return json.Marshal(jsonData)
  }
docs: // Decrypt tries to find encrypted values in JSON data and decrypt them. It uses IsEncrypted function on the
  // data to check if it contains any encrypted data.
  // Then it parses data as JSON as tries to lookup all values that begin with `Prefix`, then trim prefix, base64
  // decode the data and decrypt them using provided decrypt function.
  // This function can accept only []byte and return []byte