Go语言解析Json(使用jsonparser)
原文地址:https://blog.csdn.net/benben_2015/article/details/81119804
jsonparser github地址:https://github.com/buger/jsonparser
上一篇golang读取json配置文件介绍了使用encoding/json
包来解析json文件,但是这种方法在面对结构复杂、字段较多的情况时,解析效率不是很高。上一篇中,我们在解析json文件时,需要提前在代码中定义好解析后对应的结构体,比较麻烦。而今天的主角jsonparser
不需要你了解载入文件的结构,允许你通过提供它们的路径来访问。它可以快速的提取json内容,比encoding/json
包的速度高出10倍左右。
jsonparser
之所以有如此快的速度,原因有如下几个方面:
- 它不依赖
encoding/json
,reflection
或者interface{}
,唯一依赖包是bytes
; - 在字节级别上操作json,提供指向原始数据结构的指针,无内存分配;
- 没有自动类型转化,默认情况下,所有内容都是字节切片,但是它提供了值类型,因此你可以自己进行转化
- 它不解析完整的内容,仅仅解析你指定的字段
通过下面的代码来了解下它的使用。
package mainimport ("github.com/buger/jsonparser""fmt"
)func main() {data := []byte(`{"person": {"name":{"first": "Leonid","last": "Bugaev","fullName": "Leonid Bugaev"},"github": {"handle": "buger","followers": 109},"avatars": [{ "url": "https://avatars1.githubusercontent.com/u/14009?v=3&s=460", "type": "thumbnail" }]},"company": {"name": "Acme"}
}`)result, err := jsonparser.GetString(data, "person", "name", "fullName")if err != nil {fmt.Println(err)}fmt.Println(result)content, valueType, offset, err := jsonparser.Get(data, "person", "name", "fullName")if err != nil {fmt.Println(err)}fmt.Println(content, valueType, offset)//jsonparser提供了解析bool、string、float64以及int64类型的方法,至于其他类型,我们可以通过valueType类型来自己进行转化result1, err := jsonparser.ParseString(content)if err != nil {fmt.Println(err)}fmt.Println(result1)err = jsonparser.ObjectEach(data, func(key []byte, value []byte, dataType jsonparser.ValueType, offset int) error {fmt.Printf("key:%s\n value:%s\n Type:%s\n", string(key), string(value), dataType)return nil}, "person", "name")
}
参考文章
- buger/jsonparser
Go语言解析Json(使用jsonparser)相关推荐
- python自动解析json_Python语言解析JSON详解
本文主要向大家介绍了Python语言解析JSON详解,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. JSON 函数使用 JSON 函数需要导入 json 库:import jso ...
- c语言解析json报文源码,GitHub - faycheng/cJSON: cJson源码和源码分析
cJSON官方文档翻译 项目预期目标 文档翻译 函数列表 项目架构 源码注释 解析流程 快速使用 ###版权说明 Copyright (c) 2009 Dave Gamble Permission i ...
- c语言json结构体_C语言解析JSON源码
2020-01-09 关键字:cJSON.linux JSON解析 JSON 是一种在互联网领域内很常用的轻量级数据交换协议. 它与 XML 的地位差不多,但就笔者而言,笔者更喜欢 JSON 的风格, ...
- json解析函数c语言,C语言解析json类型数据
转自:http://buluzhai.iteye.com/blog/845404 首先感谢作者!! 先看json的数据结构 c中没有对象,所以json数据是采用链表存储的 C代码如下: typed ...
- c语言解析json代码举例,CJSON 实例
cJSON: 一个用c写的一个简单好用的JSON解析器 cJSON库 1.json的数据结构 c语言中json数据是采用链表存储的 typedef struct cJSON { struct cJSO ...
- c语言解析json数据
http://buluzhai.iteye.com/blog/845404 我使用的是cJSON:http://sourceforge.net/projects/cjson/ 先看json的数据结构 ...
- 在C语言中解析json配置文件
业务需求 在C或者C++项目中常常需要解析配置文件,我们常见的配置文件格式一般就是.ini,xml,lua或者是一般的text文件,这些格式比较恼人的一个问题就是数据格式过于冗余,或者功能不够强大,不 ...
- 介绍Jackson JsonParser解析json
介绍Jackson JsonParser解析json 前文介绍了通过JsonNode解析json,本文深入底层工具JsonParser的用法. 1. 概述 实际应用中经常需要解析json数据,如查询N ...
- JavaScript语言精粹JSON解析器源码阅读
1 // 这是一个用JavaScript编写JSON解析器的实现方案: 2 var jsonParser = (function() { 3 // 这是一个能把JSON文本解析成JavaScript数 ...
最新文章
- poj 2079(旋转卡壳)
- linux mail.rc 端口,配置mail.rc 文件并使用mail发送邮件的详细配置
- zabbix的agent端的主动模式关键三个参数
- springcloud(一):大话Spring Cloud
- 矩阵分析 第二章 lambda矩阵和Jordan标准型
- linux下的C语言开发(gdb调试)
- 数据通信基础(面试必备)
- Jzoj5445【NOIP2017提高A组冲刺11.2】失格
- 关于DNF的多媒体包NPK文件的那些事儿(5)- IMG文件里的指向型索引项(指向帧)的深度与有向环检测
- 【线性代数】矩阵的特征值分解(对角化、谱分解)
- python入门到精通 _6文件读写
- 关于未来几年的发展,闰土有话要说
- 期末复习【操作系统】
- payjs 源码_自动发卡系统(包含前台以及后台管理系统),对接payjs支付(无须企业认证)...
- ADE-Tran-Dynamic parameter
- LASSO回归与L1正则化 西瓜书
- 有关三次握手,四次挥手的超详细总结!!!
- 羞辱iPhone! 安卓配Mac才最爽?老司机道出8个爽点...(iPhone骂骂咧咧退出群聊)...
- 爬虫碰到谷歌验证码的一些解决思路
- 7.23洪资内参(更新中)