Go 解析 JSON 字符串的 key 先后顺序

jsonkeys - 获取 JSON key 的先后顺序

GitHub - jsonkeys

当使用GO 标准库 encoding/json 解析动态JSON 的时候,我们将结果解析为 map[string]interface{}

而 GO map 类型的key 是无序的,也就是说你不能确定JSON key 的先后顺序。

如果你需要确定 JSON key 的顺序,可以使用 jsonkeys 包。

一个例子:markdowntable - JSON 转 Markdown 表格的工具

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)
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值