diff --git a/unmarshal.go b/unmarshal.go index 310ef71..b38cef7 100644 --- a/unmarshal.go +++ b/unmarshal.go @@ -141,7 +141,15 @@ func (u *unmarshaler) StringValue(v []byte) { if u.err != nil { return } - u.top().SetString(string(v)) + + t := u.top() + if t.Type().Kind() == reflect.Slice { + s := reflect.ValueOf(string(v)) + n := reflect.Append(t, s) + t.Set(n) + } else { + u.top().SetString(string(v)) + } } func (u *unmarshaler) SimpleKey(v []byte) { diff --git a/unmarshal_test.go b/unmarshal_test.go index 6113d6b..5e6bc68 100644 --- a/unmarshal_test.go +++ b/unmarshal_test.go @@ -234,3 +234,13 @@ Name = "plantain" assert.Equal(t, expected, x) } + +func TestArraySimple(t *testing.T) { + x := struct { + Foo []string + }{} + doc := `Foo = ["hello", "world"]` + err := toml.Unmarshal([]byte(doc), &x) + require.NoError(t, err) + assert.Equal(t, []string{"hello", "world"}, x.Foo) +}