Go语言JSON解析器gjson使用方法详解
作者:go2coding 发布时间:2024-02-10 20:11:08
gjson
GJSON
是一个Go
包,它提供了一种从json
文档中获取值的快速简单的方法。它具有单行检索、点符号路径、迭代和解析 json 行等功能。
还可以查看SJSON
以修改 json
,以及JJ
命令行工具。
本自述文件是如何使用 GJSON
的快速概述,有关更多信息,请查看GJSON
语法。
github 的地址在这里。
安装
安装gjson
,使用的是go
传统的安装方法:
go install github.com/tidwall/gjson@latest
在文件的目录下执行:
$ go get -u github.com/tidwall/gjson
这样就在目录下,可以使用gjson
了。
使用
获取相应的数值。
获取指定路径的搜索 json
。路径采用点语法,例如“name.last”或“age”。当找到该值时,它会立即返回。
package main
import "github.com/tidwall/gjson"
const json = `{"name":{"first":"Janet","last":"Prichard"},"age":47}`
func main() {
value := gjson.Get(json, "name.last")
println(value.String())
}
这将打印:
Prichard
这个跟我们使用的传统的json
解析还有一点区别,gjson
不仅帮我们解析了json
的数据,还帮我们建立了快速查找的通道。
路径语法
路径是由点分隔的一系列键。密钥可能包含特殊的通配符“*”和“?”。要访问数组值,请使用索引作为键。要获取数组中的元素数量或访问子路径,请使用“#”字符。点和通配符可以用“\”转义。
{
"name": {"first": "Tom", "last": "Anderson"},
"age":37,
"children": ["Sara","Alex","Jack"],
"fav.movie": "Deer Hunter",
"friends": [
{"first": "Dale", "last": "Murphy", "age": 44, "nets": ["ig", "fb", "tw"]},
{"first": "Roger", "last": "Craig", "age": 68, "nets": ["fb", "tw"]},
{"first": "Jane", "last": "Murphy", "age": 47, "nets": ["ig", "tw"]}
]
}
"name.last" >> "Anderson"
"age" >> 37
"children" >> ["Sara","Alex","Jack"]
"children.#" >> 3
"children.1" >> "Alex"
"child*.2" >> "Jack"
"c?ildren.0" >> "Sara"
"fav\.movie" >> "Deer Hunter"
"friends.#.first" >> ["Dale","Roger","Jane"]
"friends.1.last" >> "Craig"
您还可以使用 查询数组中的第一个匹配项#(…),或使用 查找所有匹配项#(…)#。查询支持==, !=, <, <=, >,>= 比较运算符和简单的模式匹配%(like) 和!% (not like) 运算符。
friends.#(last=="Murphy").first >> "Dale"
friends.#(last=="Murphy")#.first >> ["Dale","Jane"]
friends.#(age>45)#.last >> ["Craig","Murphy"]
friends.#(first%"D*").last >> "Murphy"
friends.#(first!%"D*").last >> "Craig"
friends.#(nets.#(=="fb"))#.first >> ["Dale","Roger"]
这样我们查找起来就非常方便了。
来源:https://blog.csdn.net/weixin_40425640/article/details/127243344


猜你喜欢
- 抽取出我们代码中共性的东西是一个很好的编程习惯。 比如,像以下的两个Python函数:def say_hello(person_name):
- 导入包import csv创建或打开文件,设置文件形式f = open('xixi.csv', mode='a
- 前言用python编程绘图,其实非常简单。中学生、大学生、研究生都能通过这10篇教程从入门到精通!快速绘制几种简单的柱状图。1垂直柱图(普通
- 看下文章前我想先说一个问题遇到问题不要盲目的搜索答案,先看看终端提示什么错误,下面我总结一下会出现jupyter notebook运行命令,
- DBI安装:DBI详细信息参考:http://dbi.perl.org/ 1.下载DBI包: wget http://search.cpan
- 本文实例为大家分享了js实现微信聊天效果的具体代码,供大家参考,具体内容如下<!DOCTYPE html><html la
- Float(浮动)概念也许是CSS中最让人迷惑的一个概念吧。Float经常被错误理解,而且因为将上下文元素全部浮动导致的可读性、
- 这篇分享几个在地址栏实现的Javascript有趣效果和应用。能在浏览器地址栏实现的效果太多了,字体放大、显示所有图片、显示Cookie等等
- 前言在python列表的元素删除操作中, del, pop(), remove()很容易混淆, 下面对三个语句/方法作出解释del语句del
- 本人是一名python初学者,刚刚看到一道有趣的python问题,“用python如何在编译器中打印出菱形图案?”因此决定尝试一下,代码不多
- 译注:前两天看到一篇不错的英文文章,叫做 How browsers work,该文概要的介绍了浏览器从头到尾的工作机制,包括HTML等的解析
- 引言:在微信小程序里,比如商品展示页面的商品详情会有图片展示,PC端设置的商品详情是PC端的宽度,所以在小程序里图片会显示不全,这时就应该做
- 1.经典类与新式类在了解Python的类与类型前,需要对Python的经典类(classic classes)与新式类(new-style
- 但是怎么找到是哪个SQL语句的执行时间过长呢?可以通过MySQL Slow Log来找,详解如下。 首先找到MySQL的配置文件my.cnf
- 装饰器(decorator)是一种高级Python语法。装饰器可以对一个函数、方法或者类进行加工。在Python中,我们有多种方法对函数和类
- 前言对于JavaScript程序的调试,相比于alert(),使用console.log()是一种更好的方式,原因在于:alert()函数会
- 方法一:import osimport cv2 as cvimport numpy as np# 读取yuv420p的一帧文件,并转化为pn
- 1 概述利用Python生成简单的词云,需要的工具是cython,wordcloud与anaconda.2 准备工作包括安装cython,w
- 目录项目地址:前言使用方式主要代码blive_record.pyconfig.py(配置文件)项目地址:https://github.com
- 实例如下:/** * 数字格式转换成千分位 *@param{Object}num */function commafy(num){ &nbs