
GO语言 处理未知JSON数据
发布日期:2021-05-14 08:46:26
浏览次数:22
分类:原创文章
本文共 1971 字,大约阅读时间需要 6 分钟。
package mainimport ( "bytes" "encoding/json" "fmt" "io/ioutil" "log" "path" )
func main(){ data := map[string]interface{}{ "FirstName":"Jan", "Sex":18, } stu,_ := json.Marshal(&data) reader := bytes.NewReader(stu) fmt.Println(reader) fmt.Println(stu) fmt.Println(data) //content := readFileFrompath("./test.json")//文件方式 //_ = json.Unmarshal(content, &f) content :=`{"FirstName":"Jan","LastName":"Kersschot","Addresses":[{"Type":"private","City":"Aartselaar","Country":"Belgium"},{"Type":"work","City":"Boom","Country":"Belgium"}],"Remark":"none","acc":{"Type":"private","City":"Aartselaar","Country":"Belgium"}}`//字符串方式 var f interface{} _ = json.Unmarshal([]byte(content), &f) m := f.(map[string]interface{}) fmt.Println(f) /*方式1*/ if m["acc"] !="" { acc := m["acc"].(map[string]interface{}) fmt.Println(acc["City"]) } if m["Addresses"] != ""{ Addresses :=m["Addresses"].([]interface{}) fmt.Println(Addresses) for k,v := range Addresses { row := v.(map[string]interface{}) fmt.Println(k,v,row["City"],row["Country"],row["Type"]) } } /*方式2*/ for k,v := range m{ switch v.(type) { case []interface{}: rows :=v.([]interface{}) for sk,sv :=range rows{ son :=sv.(map[string]interface{}) for tk,tv :=range son{ fmt.Println("k:",k,"----sk:",sk,"----tk:",tk,"----tv:",tv) } } case map[string]interface{}: rows :=v.(map[string]interface{}) for sk,sv :=range rows { fmt.Println("k:",k,"----sk:",sk,"----sv:",sv) } default: fmt.Println("k:",k,"----v:",v) } }}
/*读取文件内容*/func readFileFrompath(path string) []byte { content, err := ioutil.ReadFile(path) if err != nil { log.Println(err) } return content}
发表评论
最新留言
不错!
[***.144.177.141]2025年04月13日 10时48分36秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
计算机网络UDP协议和TCP协议
2019-03-11
Qt中的QGridLayout网格布局类下的两种不同的addWidget功能
2019-03-11
Linux运行C语言文件
2019-03-11
C字符串高级
2019-03-11
2010-03-25 函数题
2019-03-11
C语言_动态内存分配练习
2019-03-11
Linux学习_系统进程概念
2019-03-11
七层网络模型(待添加)
2019-03-11
考研复试——KY276 Problem C
2019-03-11
LeetCode62/63/64 不同路径I/II/最小路径和
2019-03-11
LeetCode 45/55. 跳跃游戏I/II
2019-03-11
LeetCode258 各位相加(弃九法)
2019-03-11
老鸟带你画tiled lines
2019-03-11
MybatisPlus自定义Sql实现多表查询
2019-03-12
Java位运算,负数的二进制表示形式,int类型最大值为什么是2的31次方-1
2019-03-12
WIFI模块开发教程之W600网络篇3:STA模式下TCP Client通信
2019-03-12
PyQt5快速上手基础篇10-QSettings用法
2019-03-12
JQuery--手风琴,留言板
2019-03-12
vue--搜索,添加,删除小案例
2019-03-12
上传文件进行格式限制 --input file
2019-03-12