瀏覽代碼

feat: add method to jsonx (#2049)

Minghong Fang 2 年之前
父節點
當前提交
48f7e01158
共有 2 個文件被更改,包括 22 次插入0 次删除
  1. 9 0
      core/jsonx/json.go
  2. 13 0
      core/jsonx/json_test.go

+ 9 - 0
core/jsonx/json.go

@@ -53,3 +53,12 @@ func unmarshalUseNumber(decoder *json.Decoder, v interface{}) error {
 func formatError(v string, err error) error {
 	return fmt.Errorf("string: `%s`, error: `%w`", v, err)
 }
+
+// MarshalToString marshals v into string.
+func MarshalToString(v interface{}) (string, error) {
+	data, err := Marshal(v)
+	if err != nil {
+		return "", formatError(string(data), err)
+	}
+	return string(data), nil
+}

+ 13 - 0
core/jsonx/json_test.go

@@ -85,3 +85,16 @@ func TestUnmarshalFromReaderError(t *testing.T) {
 	err := UnmarshalFromReader(strings.NewReader(s), &v)
 	assert.NotNil(t, err)
 }
+
+func TestMarshalToString(t *testing.T) {
+	var v = struct {
+		Name string `json:"name"`
+		Age  int    `json:"age"`
+	}{
+		Name: "John",
+		Age:  30,
+	}
+	toString, err := MarshalToString(v)
+	assert.Nil(t, err)
+	assert.Equal(t, `{"name":"John","age":30}`, toString)
+}