

GoLand解析json获取指定字段内容
source link: https://studygolang.com/articles/35052
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

GoLand解析json获取指定字段内容
wangcheng · 16天之前 · 618 次点击 · 预计阅读时间 2 分钟 · 大约8小时之前 开始浏览根据字节切片动态解析json指定字段,初学go可以相互多交流,不妥之处请留言说明,我会及时改正
data.json
{
"basic_info":{
"upload_date":"2021-04-25 14:17:05.974168",
"device_id":"AUTH",
"tss":{
"date":"2021",
"system_version":{
"system":"1.7.1",
"plug":"1.7.3",
"patch":"1.7.22"
}
}
}
}
code.go
import (
"encoding/json"
"fmt"
"io/ioutil"
)
/**
* 获取json字符串中指定字段内容 ioutil.ReadFile()读取字节切片
* @param bytes json字符串字节数组
* @param field 可变参数,指定字段
*/
func getJsonField(bytes []byte, field ...string) []byte {
if len(field) < 1 {
fmt.Printf("At least two parameters are required.")
return nil
}
//将字节切片映射到指定map上 key:string类型,value:interface{} 类型能存任何数据类型
var mapObj map[string]interface{}
json.Unmarshal(bytes, &mapObj)
var tmpObj interface{}
tmpObj = mapObj
for i := 0; i < len(field); i++ {
tmpObj = tmpObj.(map[string]interface{})[field[i]]
if tmpObj == nil {
fmt.Printf("No field specified: %s ", field[i])
return nil
}
}
result, err := json.Marshal(tmpObj)
if err != nil {
fmt.Print(err)
return nil
}
return result
}
func main() {
bytes, _ := ioutil.ReadFile("/tmp/data.json")
s := getJsonField(bytes, "basic_info", "tss")
fmt.Println(string(s))
}
root@Sangfor:/tmp/go_code# go run code.go
{"date":"2021","system_version":{"patch":"1.7.22","plug":"1.7.3","system":"1.7.1"}}
Recommend
-
6
ProtobufC++ protobuf转成json不显示零值字段问题解决 前提:所用语言:C++,版本:最新 问题描述:在使用枚...
-
7
Json字段选取器介绍和实现 2020-06-27 分类:Java 阅读(3377) 评论(0)
-
10
tsconfig.json文件说明一般在 typescript 的项目中,我们都能看到 tsconfig.json 这个文件,它指定了此项目的编译选项,也指定了此项目的根目录,因此这个文件一般也是在项目的根目录下。既然如此,就单单 typescrip...
-
4
V2EX › MySQL MYSQL Json 字段操作疑问 seagull7558 · 2 小时 28 分钟前 · 108 次点击
-
7
Goland 使用教程 01:高效的处理 json 文本 yudotyang · 6天之前 · 383 次点击 · 预计阅读时间 4...
-
10
V2EX › Go 编程语言 GoLand 疯狂刷 go mod list -m -json all
-
3
博主最近失业在家,找工作之余,自己动手写了个洋葱架构(整洁架构)解决方案,以总结和整理以前的项目经验,起名叫OnionArch,其目的是为了更好的实现采用DDD(领域驱动分析)和命令查询职责分离(CQRS)的洋葱架构。 什么是OnionArch OnionArch解...
-
4
V2EX › Python Python 多主机管理 获取指定文件内容
-
5
V2EX › Java springboot 中 mapper 查询操作返回指定的字段时,总是报错
-
5
本篇笔记为Django笔记系列之十二,首发于公号【Django笔记】 本篇笔记将介绍查询中的 defer 和 only 两个函数的用法,笔记目录如下: defer 1、defer defer 的英语单词的意思是 延迟、推迟
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK