Skip to content

Commit e1f16a2

Browse files
pezeyndu13
authored andcommitted
add stringify map val
1 parent 24fd0f6 commit e1f16a2

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

utils/client.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"fmt"
2020
"hash"
2121
"io"
22+
"io/ioutil"
2223
mathRand "math/rand"
2324
"net/http"
2425
"net/textproto"
@@ -792,3 +793,37 @@ func GetEndpoint(endpoint *string, server *bool, endpointType *string) *string {
792793

793794
return endpoint
794795
}
796+
797+
func toJSONString(a interface{}) *string {
798+
switch v := a.(type) {
799+
case *string:
800+
return v
801+
case string:
802+
return dara.String(v)
803+
case []byte:
804+
return dara.String(string(v))
805+
case io.Reader:
806+
byt, err := ioutil.ReadAll(v)
807+
if err != nil {
808+
return nil
809+
}
810+
return dara.String(string(byt))
811+
}
812+
byt := bytes.NewBuffer([]byte{})
813+
jsonEncoder := json.NewEncoder(byt)
814+
jsonEncoder.SetEscapeHTML(false)
815+
if err := jsonEncoder.Encode(a); err != nil {
816+
return nil
817+
}
818+
return dara.String(string(bytes.TrimSpace(byt.Bytes())))
819+
}
820+
821+
func StringifyMapValue(a map[string]interface{}) map[string]*string {
822+
res := make(map[string]*string)
823+
for key, value := range a {
824+
if value != nil {
825+
res[key] = toJSONString(value)
826+
}
827+
}
828+
return res
829+
}

utils/client_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,3 +311,19 @@ func Test_ToArray(t *testing.T) {
311311
res = ToArray(nil)
312312
utils.AssertNil(t, res)
313313
}
314+
315+
func Test_StringifyMapValue(t *testing.T) {
316+
in := map[string]interface{}{
317+
"num": 10,
318+
"json": map[string]string{
319+
"test": "ok",
320+
},
321+
"str": "ok",
322+
"*str": dara.String("ok"),
323+
}
324+
out := StringifyMapValue(in)
325+
utils.AssertEqual(t, "10", dara.StringValue(out["num"]))
326+
utils.AssertEqual(t, `{"test":"ok"}`, dara.StringValue(out["json"]))
327+
utils.AssertEqual(t, "ok", dara.StringValue(out["str"]))
328+
utils.AssertEqual(t, "ok", dara.StringValue(out["*str"]))
329+
}

0 commit comments

Comments
 (0)