Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一个非常棒的Go-Json解析库

一个非常棒的Go-Json解析库

作者头像
阿伟
发布于 2021-01-28 07:37:15
发布于 2021-01-28 07:37:15
1.8K00
代码可运行
举报
文章被收录于专栏:GoLang那点事GoLang那点事
运行总次数:0
代码可运行

json是一种数据格式,经常被用作数据交换,页面展示,序列化等场景,基本每种语言都有对应的json解析框架,Go语言也不例外,并且内置了json库,基本能够满足一些普通开发场景,但有些复杂场景下就不太理想了,因此找一个好用的开源的json库就非常有必要了,先放地址

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://github.com/bitly/go-simplejson

内置json库的使用

我们创建一个如下结构体,用来测试内置json库和开源的json库,一起看看使用上是来怎么操作的呢?

内置的json库基本上就两个方法 ToJson和FromJson,把一个对象转换为json字符串,把json字符串转化为对象,如下两个api,如果我们想要从json字符串中获取某个key时,或者想要知道某个value的类型时,此时内置库就不支持了,我们就需要想别的办法了

simple-json的使用

这个框架使用起来非常简单,并且源码也非常简洁,只有三个源码文件,三个测试文件,感兴趣的同学可以研究下源码实现,simple-json是一个json解析库,就是说对json字符串进行解析,本身不支持序列化和反序列化

我们构造一个json字符串,然后使用simple-json根据我们的场景来解析这个字符串,得到我们想要的结果

代码语言:javascript
代码运行次数:0
运行
复制

首先我们获取一个json实例,框架本身支持多种方法获取一个json实例,可以直接创建,也可以在创建时直接指定一个json字符串,也可以通过文件的形式创建,这里我们使用使用第二种方式,也就是使用上面代码中的json2

1、第一个场景,获取key时tagA的值,下面代码中Get方法返回的还是Json实例,想要具体的值,得转换成值所对应的类型,假设我们已经知道这个值的类型,那么直接.String()就得到结果了

2、第二个场景, 获取数组中的key为tagH的值,首先获取tagF,返回Json实例,对应的是一个数组,获取下标为2的Json实例,再从这个Json实例中获取key为tagH的value

3、第三个场景,检查某一个key是否存在,第一个反馈的值是json实例,第二个返回的值是bool类型,true代表存在,false代表不存在,如果存在我们可以通过json实例直接转换成值的类型

4、第四个场景,获取嵌套的key,simple-json提供了按照路径搜索的方法,也就是一层一层往下查找,每一层都是一个json实例,如下我们获取tagE

5、还有一个其他场景,比如删除一个key,获取key的时候返回默认值等

simple-json的其他更多方法,使用场景大家可以更多地深入研究,欢迎留言探讨

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GoLang那点事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
认真CS☀️Unity中Newtonsoft.Json的使用
通过上述描述,可知使用该类是需要相应的有一个类并且这个类是标记了[Serializable],类字段也是必须是可序列化的,私有的字段或者被标记[NonSerialized]的字段将被忽略。
星河造梦坊官方
2024/08/15
9170
认真CS☀️Unity中Newtonsoft.Json的使用
Unity 数据读取|(四)Json文件解析(Newtonsoft.Json ,Litjson,JsonUtility,SimpleJSON)
游戏开发小Y
2024/01/18
2.4K0
我攻克的技术难题 - 探究Java的Json库之后,我才明白爬虫要用python
在热衷于开发爬虫的日子,我一般都是使用Python。但是我第一个自学的语言是Java,工作也是和Java紧密联系。难道是Java不能写爬虫吗,相反我第一个爬虫程序就是使用Java开发的。
叫我阿柒啊
2024/01/27
2400
我攻克的技术难题 - 探究Java的Json库之后,我才明白爬虫要用python
高效JSON解析方案
JSON是常用的数据编码格式,在从海量JSON格式字符串数据中解析出所需值常常是计算的性能瓶颈,在大数据实时离线场景尤为常见。本文阐述一种高效解析JSON的方案和实现,相比较于jackson,在公司场景应用中,性能平均提升50%+。
一叶落知秋
2023/01/14
1K0
高效JSON解析方案
Delphi7用superobject解析Json数据
现在不管Webapi还是一般的数据通讯,用的基本都是Json,以前很多的应用程序都是用delphi7开发的,为了维护旧的程序以及与新的接口进行对接(如微信支付宝支付等),我们就用到了superobject来操作Json数据。
Vaccae
2019/07/25
7.9K0
深入 Go 中各个高性能 JSON 解析库
其实本来我是没打算去看 JSON 库的性能问题的,但是最近我对我的项目做了一次 pprof,从下面的火焰图中可以发现在业务逻辑处理中,有一半多的性能消耗都是在 JSON 解析过程中,所以就有了这篇文章。
luozhiyun
2021/05/22
4.6K0
JSON Parsers 差异安全问题探索
本文由团队大佬1z3r0翻译,原文链接:https://labs.bishopfox.com/tech-blog/an-exploration-of-json-interoperability-vulnerabilities
辞令
2021/03/25
1.1K0
基于 JIT 技术的开源全场景高性能 JSON 库
大家好,我是Mandy,上一节我们对Go中的切片数据类型进行了深度的剖析,今天给大家分享一个字节跳动自研开源的JSON数据解析包。一个速度奇快的 JSON 序列化/反序列化库,由 JIT (即时编译)和 SIMD (单指令流多数据流)加速。
兔云小新LM
2023/08/09
7660
基于 JIT 技术的开源全场景高性能 JSON 库
你真的会用Python中的JSON吗,超级详细的JSON常用方法讲解,一文搞定JSON!
Python对象:通常是字典(对应于JSON对象)或列表(对应于JSON数组)。如果JSON字符串表示的是其他类型(如字符串、数字、布尔值、null),则返回相应的Python类型。
小白的大数据之旅
2024/11/20
8210
python第三方库系列之一--json
    1. 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON、XML等。反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。
py3study
2020/01/09
1.7K0
golang json 序列化、反序列化 字符串反序列化
在使用Golang进行开发时,经常会遇到需要将一段JSON字符串进行序列化和反序列化的情况。JSON是一种轻量级数据交换格式,常用于前后端数据传输、存储等场景。Golang提供了内置的​​encoding/json​​包来处理JSON的序列化和反序列化。
大盘鸡拌面
2023/11/11
1.4K0
Golang json解析与生成
JSON(Javascript Object Notation)是一种轻量级的数据交换语言,以文字为基础,具有自我描述性且易于让人阅读。尽管JSON是JavaScript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。JSON与XML最大的不同在于XML是一个完整的标记语言,而JSON不是。JSON由于比XML更小、更快,更易解析,以及浏览器的內建快速解析支持,使得其更适用于网络数据传输领域。
恋喵大鲤鱼
2019/06/14
2.9K0
JavaScript之JSON
一、简介:Json是JavaScript中读取结构化数据更好的方式。因为Json数据可以直接传给eval(),而且不必创建DOM对象。Json是一种数据格式,不是一种编程语言,虽然具有相同的语法形式,带Json并不从属于JavaScript.而且,并不是只有JavaScript才使用Json,毕竟Json只是一种数据格式。很多编程语言都有针对Json的解析器和序列化器。 二、语法 Json的语法可以表示一下三种类型的值 1、简单值:使用与JavaScript相同的语法,可以在Json中表示字符串、数值、布尔
郑小超.
2018/01/24
1.5K0
JSON.stringify()和JSON.parse() 的使用总结
如果一个被序列化的对象拥有 toJSON 方法,那么 toJSON 方法后的返回值会被序列化,例如:
用户8921923
2022/10/24
1.5K0
数据提取之JSON与JsonPATH
我们知道再爬虫的过程中我们对于爬取到的网页数据需要进行解析,因为大多数数据是不需要的,所以我们需要进行数据解析,常用的数据解析方式有正则表达式,xpath,bs4,这次我们来介绍一下另一个数据解析库--jsonpath,在此之前我们需要先了解一下什么是json。
前端皮皮
2021/12/02
2.3K0
数据提取之JSON与JsonPATH
爬取QQ音乐的评论-JSON库的详细使用
JSON 是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。python 的 json库提供了一套强大的工具来处理 JSON 数据,包括编码(序列化)和解码(反序列化)功能,以及从文件和字符串中读取和写入 JSON 数据的能力。Python 的 json 库可以在 Python 对象(如字典和列表)和 JSON 格式的字符串之间进行转换。
laity
2025/01/15
2140
爬取QQ音乐的评论-JSON库的详细使用
jackson学习之四:WRAP_ROOT_VALUE(root对象)
本文是《jackson学习》系列的第四篇,前面学习了常用API,可以执行最基本的序列化和反序列化操作,接下来要学习的就是jackson强大的注解能力,本篇要学的是root对象特性,主要内容如下:
程序员欣宸
2022/05/06
6080
jackson学习之四:WRAP_ROOT_VALUE(root对象)
Javascript:JSON总结
  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于ECMAScript的一个子集,采用完全独立于语言的文本格式。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
王金龙
2019/02/25
1.1K0
Carson带你学序列化:深入分析JSON多种解析方式(Gson、AS自带org.json、Jackson)
步骤1:创建一个与JSON数据对应的JavaBean类(用作存储需要解析的数据) Gson解析的关键 = 根据JSON数据 写出一个对应的JavaBean,规则是:
Carson.Ho
2022/03/24
1.1K0
Carson带你学序列化:深入分析JSON多种解析方式(Gson、AS自带org.json、Jackson)
Python处理json总结
JSON:JavaScript Object Notation 【JavaScript 对象表示法】
吾非同
2020/10/23
1.4K0
Python处理json总结
推荐阅读
相关推荐
认真CS☀️Unity中Newtonsoft.Json的使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档