jsonkeys - 获取 JSON key 的先后顺序

gzLin · 2021-11-13 16:54:05 · 1610 次点击 · 预计阅读时间 2 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2021-11-13 16:54:05 的文章,其中的信息可能已经有所发展或是发生改变。

jsonkeys - 获取 JSON key 的先后顺序

GitHub - 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

函数 释义
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)

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

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

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