From 7b7115fecd30e30a869f7ed6602f0cc62bbcf0c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=B9=BF?= Date: Wed, 11 Feb 2026 17:51:27 +0800 Subject: [PATCH] =?UTF-8?q?```=20refactor(object):=20=E8=B0=83=E6=95=B4JSO?= =?UTF-8?q?NBaseObject=E5=A4=84=E7=90=86=E9=A1=BA=E5=BA=8F=E5=B9=B6?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=81=8D=E5=8E=86=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 调整了JSONObject.Put方法中类型判断的顺序,将JSONBaseObject类型的 处理移到最后,避免与*JSONObject和*JSONArray的判断冲突 - 新增Entries()方法用于获取所有键值对映射 - 新增Values()方法用于获取所有值的切片 ``` --- object.go | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/object.go b/object.go index c87be16..b726bdf 100644 --- a/object.go +++ b/object.go @@ -54,13 +54,14 @@ func (jo *JSONObject) Get(key string) (interface{}, bool) { // Put 设置指定键的值,如果是JSONBaseObject则提取其值 func (jo *JSONObject) Put(key string, value interface{}) { switch v := value.(type) { - case JSONBaseObject: - // 如果是JSONBaseObject,转换为实际值 - jo.data[key] = extractValueFromJSONBaseObject(v) case *JSONObject: jo.data[key] = v.data case *JSONArray: jo.data[key] = v.data + case JSONBaseObject: + // 如果是JSONBaseObject,转换为实际值 + jo.data[key] = extractValueFromJSONBaseObject(v) + default: jo.data[key] = v } @@ -96,6 +97,24 @@ func (jo *JSONObject) ContainsKey(key string) bool { return exists } +// Entries 获取所有键值对 +func (jo *JSONObject) Entries() map[string]interface{} { + result := make(map[string]interface{}) + for k, v := range jo.data { + result[k] = v + } + return result +} + +// Values 获取所有值 +func (jo *JSONObject) Values() []interface{} { + values := make([]interface{}, 0, len(jo.data)) + for _, v := range jo.data { + values = append(values, v) + } + return values +} + // GetData 获取内部数据 func (jo *JSONObject) GetData() map[string]interface{} { return jo.data