jsonkeys - 获取 JSON key 的先后顺序

GitHub - jsonkeys

encoding/jsonmap[string]interface{}
map
jsonkeys

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

函数释义
ParseFromData从JSON数据解析key
func ParseFromData(data []byte) (JsonKeysMap, error)
ParseFromFile从JSON文件解析key
func ParseFromFile(file string) (JsonKeysMap, error)
Get获取 key 排序切片
func (jkm JsonKeysMap) Get(keyPath string) (StringSlice, error)