话不多说,直接上代码。
1.功能函数
| |
| func Json2StructOrMap(raw string, dst interface{}) { |
| _ = json.Unmarshal([]byte(raw), &dst) |
| } |
| |
| |
| func StructOrMap2Json(src interface{}) string { |
| data, _ := json.Marshal(src) |
| return string(data) |
| } |
2.测试代码
| |
| type User struct { |
| Name string `json:"name"` |
| Age int `json:"age"` |
| Gender string `json:"gender"` |
| } |
| |
| func main() { |
| |
| raw := `{"one": 2}` |
| var dst map[string]int |
| _ = json.Unmarshal([]byte(raw), &dst) |
| fmt.Printf("after unmarshal, dst data: %v, type: %T\n", dst, dst) |
| |
| |
| src := map[string]string{"one": "one"} |
| dstByte, _ := json.Marshal(src) |
| srcJson := string(dstByte) |
| fmt.Printf("src->json: %v, type: %T\n", srcJson, srcJson) |
| |
| |
| user := User{"Bob", 25, "male"} |
| userWithJson := StructOrMap2Json(user) |
| fmt.Printf("struct -> json, type: %T, val: %v\n", userWithJson, userWithJson) |
| |
| |
| |
| usermap := map[string]interface{}{"name": "Bob", "age": 25, "gender": "male"} |
| usermapWithJson := StructOrMap2Json(usermap) |
| fmt.Printf("map -> json, type: %T, val: %v\n", usermapWithJson, usermapWithJson) |
| |
| |
| |
| rawUser := `{"name":"Bob","age":25,"gender":"male"}` |
| var m map[string]interface{} |
| Json2StructOrMap(rawUser, &m) |
| var user_1 User |
| Json2StructOrMap(rawUser, &user_1) |
| fmt.Printf("json -> map, type: %T, val: %v\n", m, m) |
| fmt.Printf("json -> struct, type: %T, val: %v\n", user_1, user_1) |
| |
| |
| |
| |
| } |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律