Skip to content
Snippets Groups Projects
Commit 848a6e30 authored by Danis Kirasirov's avatar Danis Kirasirov
Browse files

update array non-strict convert

parent b6dd8017
No related branches found
No related tags found
No related merge requests found
......@@ -4,6 +4,7 @@ import (
"context"
"fmt"
"reflect"
"strings"
)
var stringType = &StringType{}
......@@ -62,10 +63,21 @@ func (StringType) NonStrictConvert(_ context.Context, _ *Field, v interface{}) i
if v == nil {
return nil
}
if _, ok := v.(string); ok {
switch v := v.(type) {
case string:
return v
case []interface{}:
// Преобразование списка в строку происходит через пробел,
// чтобы сохранить совместимость при обратном преобразовании в список
elems := make([]string, len(v))
for i, elem := range v {
elems[i] = fmt.Sprintf("%v", elem)
}
return strings.Join(elems, " ")
}
// По умолчанию используется стандартное форматирование
return fmt.Sprintf("%v", v)
}
......
......@@ -49,7 +49,7 @@ func TestStringField_DecodeNonStrict(t *testing.T) {
{"Int", String(), 42, "42", false},
{"Float", String(), 3.14, "3.14", false},
{"Bool", String(), true, "true", false},
{"Array", String(), []interface{}{1, "2"}, "[1 2]", false},
{"Array", String(), []interface{}{1, "2"}, "1 2", false},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment