From 5da3972d7343460faeb0f38392c96f1bbb654a5f Mon Sep 17 00:00:00 2001 From: Jakub Matys Date: Wed, 13 Jun 2018 10:15:27 +0200 Subject: [PATCH] Fix - some parameters aren't structs but slices --- bchain/coins/btc/codec.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/bchain/coins/btc/codec.go b/bchain/coins/btc/codec.go index fa8f8bab..21284a9e 100644 --- a/bchain/coins/btc/codec.go +++ b/bchain/coins/btc/codec.go @@ -56,9 +56,20 @@ func (JSONMarshalerV1) Marshal(v interface{}) ([]byte, error) { f = v.FieldByName("Params") if f.IsValid() { - arr := make([]interface{}, f.NumField()) - for i := 0; i < f.NumField(); i++ { - arr[i] = f.Field(i).Interface() + var arr []interface{} + switch f.Kind() { + case reflect.Slice: + arr = make([]interface{}, f.Len()) + for i := 0; i < f.Len(); i++ { + arr[i] = f.Index(i).Interface() + } + case reflect.Struct: + arr = make([]interface{}, f.NumField()) + for i := 0; i < f.NumField(); i++ { + arr[i] = f.Field(i).Interface() + } + default: + return nil, InvalidValue } u.Params = arr }