package utils import ( "encoding/json" "strings" ) // GetJSONKeys 获取JSON对象的所有键(保持顺序) func GetJSONKeys(jsonStr string) (keys []string, err error) { dec := json.NewDecoder(strings.NewReader(jsonStr)) t, err := dec.Token() if err != nil { return nil, err } // 确保数据是一个对象 if t != json.Delim('{') { return nil, err } for dec.More() { t, err = dec.Token() if err != nil { return nil, err } keys = append(keys, t.(string)) // 解析值 var value interface{} err = dec.Decode(&value) if err != nil { return nil, err } } return keys, nil } // ToJSON 将对象转换为JSON字符串 func ToJSON(v interface{}) string { b, err := json.Marshal(v) if err != nil { return "" } return string(b) } // FromJSON 将JSON字符串解析为对象 func FromJSON(jsonStr string, v interface{}) error { return json.Unmarshal([]byte(jsonStr), v) }