jsonkeys - 获取 JSON key 的先后顺序

gzLin · · 1423 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

# jsonkeys - 获取 JSON key 的先后顺序 > GitHub - [jsonkeys](https://github.com/gitHusband/goutils/tree/master/jsonkeys) 当使用GO 标准库 `encoding/json` 解析动态JSON 的时候,我们将结果解析为 `map[string]interface{}`。 而 GO `map` 类型的key 是无序的,也就是说你不能确定JSON key 的先后顺序。 如果你需要确定 JSON key 的顺序,可以使用 `jsonkeys` 包。 > 目录 [TOC] ## 1. 使用示例 ``` testJsonkeys.go 文件 ``` ``` package main import ( "fmt" "github.com/gitHusband/goutils/jsonkeys" ) func main() { testjsonKeys() } func testjsonKeys() { jsonStr := ` { "name": "Tom", "age": 25, "is\"Cop": false, "favoriteFruits": { "bannana": "yellow", "apple": "red", "peach": "pink" }, "familyMembers": [ "David", "Sammy" ], "codeLanguage": { "Golange": "21 世纪的\"C\"语言", "Javascript": "Web 页面脚本语言", "PHP": "世界上最好的语言" } } ` // 1. 从JSON数据解析key jsonDataKeysMap, err := jsonkeys.ParseFromData([]byte(jsonStr)) if err != nil { fmt.Printf("\nJSON Data error: %v\n", err) } for dk, dv := range jsonDataKeysMap { fmt.Printf("- data key 顺序:%v: %#v\n", dk, dv) } } ``` **执行结果**: ``` % go run testJsonkeys.go - data key 顺序:root.favoriteFruits: jsonkeys.keySlice{"bannana", "apple", "peach"} - data key 顺序:root.codeLanguage: jsonkeys.keySlice{"Golange", "Javascript", "PHP"} - data key 顺序:root: jsonkeys.keySlice{"name", "age", "is\"Cop", "favoriteFruits", "familyMembers", "codeLanguage"} ``` ## 2. API <style> table th, table td { border:1px solid black; } </style> <table style="width:100%"> <thead> <th>函数</th> <th>释义</th> </thead> <tbody> <tr align="left"> <td>ParseFromData</td> <td><strong style="font-size: 15px">从JSON数据解析key</strong><br/> <em style="color: #888888">func ParseFromData(data []byte) (JsonKeysMap, error)</em></td> </tr> <tr align="left"> <td>ParseFromFile</td> <td><strong style="font-size: 15px">从JSON文件解析key</strong><br/> <em style="color: #888888">func ParseFromFile(file string) (JsonKeysMap, error)</em></td> </tr> <tr align="left"> <td>Get</td> <td><strong style="font-size: 15px">获取 key 排序切片</strong><br/> <em style="color: #888888">func (jkm JsonKeysMap) Get(keyPath string) (StringSlice, error)</em></td> </tr> </tbody> </table>

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1423 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传