From e4c0f9abf344c8886072e8d1cf4aa46718ef4df7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Mon, 28 Apr 2025 18:18:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E7=BB=84=E6=94=AF=E6=8C=81=E9=80=92?= =?UTF-8?q?=E5=BD=92=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wrapper/json.go | 8 ++++++-- wrapper/json_test.go | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/wrapper/json.go b/wrapper/json.go index d44aa20..cf93259 100644 --- a/wrapper/json.go +++ b/wrapper/json.go @@ -75,6 +75,7 @@ func (oj *ownJson) Marshal(marshalType string) ([]byte, error) { // generateStructField 递归解析 func (oj *ownJson) generateStructField(rootPath string, currentName string, currentResult gjson.Result) { structPath := oj.getPath(rootPath, currentName) + fmt.Println(structPath) if currentResult.IsBool() { // bool类型 oj.structBuilder.AddField(structPath, "", true, "", false) @@ -123,8 +124,8 @@ func (oj *ownJson) generateStructField(rootPath string, currentName string, curr return } if arrList[0].IsArray() { - // 数组就不递归处理了, 支持到二维 - oj.structBuilder.AddField(structPath, "", [][]any{}, "", false) + // 数组递归处理 + oj.generateStructField(structPath+".[]", "", arrList[0]) return } // 对象结构,递归处理 @@ -141,5 +142,8 @@ func (oj *ownJson) getPath(root string, currentName string) string { if root == "" { return currentName } + if currentName == "" { + return root + } return root + "." + currentName } diff --git a/wrapper/json_test.go b/wrapper/json_test.go index 9625a8a..c20de06 100644 --- a/wrapper/json_test.go +++ b/wrapper/json_test.go @@ -13,7 +13,7 @@ import ( ) func TestNewJson(t *testing.T) { - sourceData := `{"name": "test", "age":18,"company":{"address": "Beijing", "name":"lala"},"index":[1,2,3,4], "deep":[{"name":"a"}]}` + sourceData := `{"name": "test", "age":18,"company":{"address": "Beijing", "name":"lala"},"index":[1,2,3,4], "deep":[[{"name":"a","age":20},{"name":"c"}], [{"name":"b"},{"name":"d"}]]}` instance, iErr := NewJson(sourceData, &Option{XmlName: "ResponseData"}) fmt.Println(iErr) res, err := instance.Marshal("xml")