原文地址: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")
}

参考文章

  1. buger/jsonparser

Go语言解析Json(使用jsonparser)相关推荐

  1. python自动解析json_Python语言解析JSON详解

    本文主要向大家介绍了Python语言解析JSON详解,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. JSON 函数使用 JSON 函数需要导入 json 库:import jso ...

  2. c语言解析json报文源码,GitHub - faycheng/cJSON: cJson源码和源码分析

    cJSON官方文档翻译 项目预期目标 文档翻译 函数列表 项目架构 源码注释 解析流程 快速使用 ###版权说明 Copyright (c) 2009 Dave Gamble Permission i ...

  3. c语言json结构体_C语言解析JSON源码

    2020-01-09 关键字:cJSON.linux JSON解析 JSON 是一种在互联网领域内很常用的轻量级数据交换协议. 它与 XML 的地位差不多,但就笔者而言,笔者更喜欢 JSON 的风格, ...

  4. json解析函数c语言,C语言解析json类型数据

    转自:http://buluzhai.iteye.com/blog/845404   首先感谢作者!! 先看json的数据结构 c中没有对象,所以json数据是采用链表存储的 C代码如下: typed ...

  5. c语言解析json代码举例,CJSON 实例

    cJSON: 一个用c写的一个简单好用的JSON解析器 cJSON库 1.json的数据结构 c语言中json数据是采用链表存储的 typedef struct cJSON { struct cJSO ...

  6. c语言解析json数据

    http://buluzhai.iteye.com/blog/845404 我使用的是cJSON:http://sourceforge.net/projects/cjson/ 先看json的数据结构  ...

  7. 在C语言中解析json配置文件

    业务需求 在C或者C++项目中常常需要解析配置文件,我们常见的配置文件格式一般就是.ini,xml,lua或者是一般的text文件,这些格式比较恼人的一个问题就是数据格式过于冗余,或者功能不够强大,不 ...

  8. 介绍Jackson JsonParser解析json

    介绍Jackson JsonParser解析json 前文介绍了通过JsonNode解析json,本文深入底层工具JsonParser的用法. 1. 概述 实际应用中经常需要解析json数据,如查询N ...

  9. JavaScript语言精粹JSON解析器源码阅读

    1 // 这是一个用JavaScript编写JSON解析器的实现方案: 2 var jsonParser = (function() { 3 // 这是一个能把JSON文本解析成JavaScript数 ...

最新文章

  1. poj 2079(旋转卡壳)
  2. linux mail.rc 端口,配置mail.rc 文件并使用mail发送邮件的详细配置
  3. zabbix的agent端的主动模式关键三个参数
  4. springcloud(一):大话Spring Cloud
  5. 矩阵分析 第二章 lambda矩阵和Jordan标准型
  6. linux下的C语言开发(gdb调试)
  7. 数据通信基础(面试必备)
  8. Jzoj5445【NOIP2017提高A组冲刺11.2】失格
  9. 关于DNF的多媒体包NPK文件的那些事儿(5)- IMG文件里的指向型索引项(指向帧)的深度与有向环检测
  10. 【线性代数】矩阵的特征值分解(对角化、谱分解)
  11. python入门到精通 _6文件读写
  12. 关于未来几年的发展,闰土有话要说
  13. 期末复习【操作系统】
  14. payjs 源码_自动发卡系统(包含前台以及后台管理系统),对接payjs支付(无须企业认证)...
  15. ADE-Tran-Dynamic parameter
  16. LASSO回归与L1正则化 西瓜书
  17. 有关三次握手,四次挥手的超详细总结!!!
  18. 羞辱iPhone! 安卓配Mac才最爽?老司机道出8个爽点...(iPhone骂骂咧咧退出群聊)...
  19. 爬虫碰到谷歌验证码的一些解决思路
  20. 7.23洪资内参(更新中)

热门文章

  1. 石墨笔记,幕布和 Effie 哪个更适合教师?
  2. 知网 BibTeX自动生成(使用BibTeX引用中文参考文献)
  3. 推荐一款最好用的windows文件管理器
  4. PMP考试要学多久,考试难吗?
  5. 素数筛(c语言实现)
  6. VMware虚拟机连接外网
  7. markdown语法简明教程(一)
  8. html鼠标事件没反应,电脑鼠标点击当前页面没反应怎么办
  9. 阿里云ECS云服务器1M宽带能干嘛?
  10. 百度 Hydra 工具在移动端 UI 兼容性测试上的高效应用