首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
go test 测试用例那些事(二) mock
关于go的单元测试,之前有写过一篇帖子go test测试用例那些事,但是没有说go官方的库mock,很有必要单独说一下这个库,和他的实现原理。 mock主要的功能是对接口的模拟,需要在写代码的时候定义抽象很多接口,有时为了能方便go test可能会多写一些冗余代码,但这些工作会让你的单元测试更灵活。特别是逻辑比较复杂的时候,上层要调用其他层的方法进行单元测试,会让单元测试越写越麻烦,越写越复杂,这也是很多人不喜欢写单元测试的原因。使用mock模拟底层的接口,能让你只关注上层需要测试的逻辑,而不用为了测试一个功能,写一堆调用的底层的相关的测试逻辑。
lpxxn
2020/07/22
9100
go test 测试用例那些事(二) mock
白话Golang单元测试
最近学习某个 Golang 单元测试的课程,发现其中推荐使用 gomonkey 这种黑科技,让人略感意外,毕竟在软件开发领域,诸如依赖注入之类的概念已经流传了几十年了,本文希望通过一个例子的演化过程,来总结出 Golang 单元测试的最佳实战。
LA0WAN9
2021/12/14
5340
Go Mock 接口测试 单元测试 极简教程
To get the latest released version use: Go version < 1.16
一个会写诗的程序员
2022/05/30
2.1K0
Go Mock 接口测试 单元测试 极简教程
Go每日一库之91:gomock
testing包里 介绍了 Go 语言中单元测试的常用方法,包括子测试(subtests)、表格驱动测试(table-driven tests)、帮助函数(helpers)、网络测试和基准测试(Benchmark)等。这篇文章介绍一种新的测试方法,mock/stub 测试,当待测试的函数/对象的依赖关系很复杂,并且有些依赖不能直接创建,例如数据库连接、文件I/O等。这种场景就非常适合使用 mock/stub 测试。简单来说,就是用 mock 对象模拟依赖项的行为。
luckpunk
2023/09/30
5530
golang单元测试之mock
前面介绍了golang的一般单元测试,以及如何使用vscode进行高效的go单元测试开发。同时也说过一般单元测试重点在于cpu和内存类型的测试,而对io类型的测试是比较敏感的。那么针对这类测试就没法做单元测试了吗?有的,肯定是有的,这就是mock技术。
黑光技术
2019/03/06
11.6K0
golang单元测试之mock
Golang 单元测试 - 逻辑层
前面我们完成了最麻烦的数据层的单元测试,今天我们来看看单元测试中最容易做的一层,数据逻辑层,也就是我们通常说的 service 或者 biz 等,是描述具体业务逻辑的地方,这一层包含我们业务最重要的逻辑。
LinkinStar
2023/02/22
5650
Golang 单元测试详尽指引
文末有彩蛋。 作者:yukkizhang,腾讯 CSIG 专项技术测试工程师 本篇文章站在测试的角度,旨在给行业平台乃至其他团队的开发同学,进行一定程度的单元测试指引,让其能够快速的明确单元测试的方式方法。 本文主要从单元测试出发,对Golang的单元测试框架、Stub/Mock框架进行简单的介绍和选型推荐,列举出几种针对于Mock场景的最佳实践,并以具体代码示例进行说明。 一、单元测试 1. 单元测试是什么 单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向
腾讯技术工程官方号
2020/10/26
4.7K0
手把手教你如何进行 Golang 单元测试
点击上方蓝字,发现更多精彩 导语 本篇是对单元测试的一个总结,通过完整的单元测试手把手教学,能够让刚接触单元测试的开发者从整体上了解一个单元测试编写的全过程。最终通过两个问题,也能让写过单元测试的开发者收获单测执行时的一些底层细节知识。 引入 随着工程化开发在司内大力的推广,单元测试越来越受到广大开发者的重视。在学习的过程中,发现网上针对 Golang 单元测试大多从理论角度出发介绍,缺乏完整的实例说明,晦涩难懂的 API 让初学接触者难以下手。 本篇不准备大而全的谈论单元测试、笼统的介绍 Golang
腾讯VTeam技术团队
2021/06/02
1.6K0
Go:微服务架构下的单元测试(基于 Ginkgo、gomock 、Gomega)
本文主要使用 Ginkgo[2] 、gomock[3] 、Gomega[4] 工具来实现单元测试,之前不了解的同学,可以先熟悉一下相关文档。
Freedom123
2024/03/29
6920
Go:微服务架构下的单元测试(基于 Ginkgo、gomock 、Gomega)
Go单测系列4—mock接口测试
这是Go语言单元测试从零到溜系列教程的第3篇,介绍了如何在单元测试中使用gomock和gostub工具mock接口和打桩。
luckpunk
2023/09/10
8160
Go 单元测试之mock接口测试
gomock 是一个 Go 语言的测试框架,在实际项目中,需要进行单元测试的时候。却往往发现有一大堆依赖项。这时候就是 Gomock 大显身手的时候了,用于编写单元测试时模拟和测试依赖于外部服务的代码。它允许你创建模拟对象(Mock Objects),这些对象可以预设期望的行为,以便在测试时模拟外部依赖,通常使用它对代码中的那些接口类型进行mock。
贾维斯Echo
2024/04/19
3250
Go 单元测试之mock接口测试
go 单元测试进阶篇
腾讯云数据库团队
2017/01/05
9K2
go 单元测试进阶篇
go测试框架gomonkey的使用
gomonkey 是 golang 的一款打桩框架,目标是让用户在单元测试中低成本的完成打桩,从而将精力聚焦于业务功能的开发。
Johns
2021/09/03
20.4K0
使用 Gomock 进行单元测试
在实际项目中,需要进行单元测试的时候。却往往发现有一大堆依赖项。这时候就是 Gomock 大显身手的时候了
李海彬
2018/12/24
3.8K0
Golang 简洁架构实战
由于golang不像java一样有一个统一的编码模式,所以我们和其他团队一样,采用了 Go 面向包的设计和架构分层这篇文章介绍的一些理论,然后再结合以往的项目经验来进行分包:
luozhiyun
2022/05/09
1.3K0
Golang 简洁架构实战
gomock 源码分析
在分析完gostub的源码实现后https://mp.weixin.qq.com/s/I6urCBHbcfZCNaWw1iZmnA,我们分析下gomock的源码实现。两者原理相似,但是也有不同。
golangLeetcode
2022/08/02
4060
一文说尽Golang单元测试实战的那些事儿
导语 | 单元测试,通常是单独测试一个方法、类或函数,让开发者确信自己的代码在按预期运行,为确保代码可以测试且测试易于维护。腾讯后台开发工程师张力结合了公司级漏洞扫描系统洞犀在DevOps上探索的经验,以Golang为例,列举了编写单元测试需要的工具和方法,然后针对写单测遇到的各种依赖问题,详细介绍了通过Mock的方式解决各种常用依赖,方便读者在写go语言UT的时候,遇到依赖问题,能够快速找到解决方案。最后再和大家探讨一下关于单元测试上的一些思考。 一、前言 单元测试,通常是单独测试一个方法、类或函数
腾讯云开发者
2021/07/28
1.5K0
Go项目实战--数据Dao层代码的单元测试实战
上节课我给大家介绍了怎么给Go项目做单元测试的规划,当然这里仅限于跟咱们课程里的实战项目一样分层架构设计做的还可以的项目哦,要是所有逻辑都耦合在Controller里,那这个规划就不适用了。。。,所有逻辑都耦合在Controller里还做个锤子的单元测试,直接上线让用户给你测(手机系统都能这么干的。。。你们怕啥)
KevinYan
2025/04/23
1620
Go项目实战--数据Dao层代码的单元测试实战
优雅的使用Go进行单元测试
现在我们想测试Target函数,但是由于调用的A函数依赖于自己的某个函数,这里就是A调用了rpc接口拉别人接口数据,我们想mockA接口的目标是,想直接拿到A返回的数据即可,直接采用gomock方式,行不通,自己测试了一下,发现要不断的mock 别人接口所依赖的其他接口,非常麻烦,通过注入代码或者后面第三种方式替换函数即可解决。
公众号guangcity
2020/07/20
3.1K0
Golang 单元测试合集整理,(我最常用 gomonkey)欢迎收藏
无论写什么样的语言,单元测试都是必不可少的,它可以极大的提高我们的代码质量,减少各种低级错误和 bug
阿兵云原生
2023/09/14
2.2K0
Golang 单元测试合集整理,(我最常用 gomonkey)欢迎收藏
相关推荐
go test 测试用例那些事(二) mock
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验