go的json数据类型处理

json对象转slice

package mainimport ("encoding/json""fmt""github.com/gogf/gf/container/garray"
)func main() {// JSON 字符串jsonStr := `["apple", "banana", "orange"]`//方法一:// 解析 JSON 字符串var data interface{}//json.Unmarshal 函数将 JSON 字符串解析为 Go 的内部数据结构(在这里是 []interface{})if err := json.Unmarshal([]byte(jsonStr), &data); err != nil {fmt.Println("解析 JSON 失败:", err)return}// 将数据转换为 g.Arrayarray, ok := data.([]interface{})if !ok {fmt.Println("无法转换为 g.Array")return}g.Dump(array)
//[
//  "apple",
//  "banana",
//  "orange", 
//]//方法二:
//利用goframe提供的gjsoncontent, _ := gjson.LoadContent(jsonStr)array := content.Array()g.Dump(array)}

slice转garray

slice := []string{"apple", "banana", "orange"}
//方法一: gArray := garray.New()for _, v := range slice {gArray.Append(v)}
//方法二:garray := garray.NewStrArrayFrom(slice)g.Dump(garray.Slice())// 输出结果fmt.Println(gArray.Slice())//利用goframe提供的garray判断是否存在指定的字符串contains := garray.Contains("apple")g.Dump(contains)	   	

json转map和gmap

package mainimport ("encoding/json""fmt"
)
//JSON 字符串转换为 map[string]interface{} 类型
func main() {// JSON 字符串jsonStr := `{"name": "John", "age": 30, "city": "New York"}`//方法一:// 解析 JSON 字符串var data map[string]interface{}if err := json.Unmarshal([]byte(jsonStr), &data); err != nil {fmt.Println("解析 JSON 失败:", err)return}//方法二:
//利用goframe提供的gjsoncontent, _ := gjson.LoadContent(jsonStr)data := content.Map()// 输出结果fmt.Println(data)// 将数据转换为 g.MapgMap := gmap.NewFrom(data)fmt.Println(gMap)
}

判断指定字符串是否在数组里面

   findStr := 3familyIds := "3,4"// 方式一:遍历// 字符串分割idsArr := gstr.Split(familyIds, ",")// 查找是否在数组里面for _, id := range idsArr {if id == gconv.String(findStr) {err = gerror.New("已加入")return}}//方式二:使用goframe 的 garray.StrArrayidsArr := gstr.Split(familyIds, ",")//或者改成一句:gArr := garray.NewStrArrayFrom(idsArr)var gArr garray.StrArraygArr.Append(idsArr...)fmt.Println(gArr.Contains(findStr))  //true

省市区json数据转换

    // 获取文件路径// filePath := gfile.Pwd() + "/public/data.json"// 读取文件内容// dataJson := gfile.GetContents(filePath)dataJson := `{"code": "110000","value": "北京市","children": [{"code": "110100","value": "北京市","children": [{"code": "110101","value": "东城区"},{"code": "110102","value": "西城区"}]}]}`type Area struct {Code     stringValue    stringChildren []Area}var area *Area//方式一:使用 jsonObj.String() 将 jsonObj 对象转换为原始的 JSON 字符串jsonObj := gjson.New(dataJson)jsonStr := jsonObj.String()err = json.Unmarshal([]byte(jsonStr), &area)if err != nil {fmt.Println("转换失败:", err)return}g.Dump("area", area)//方式二:使用goframe的 gjson.Scanj, _ := gjson.LoadContent(dataJson)j.Scan(&area)g.Dump("area", area)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/310475.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

操作系统:linux(在虚拟机上详细步骤安装)Centos

文章目录 前言:一、如何在自己的电脑上安装centos?二、在虚拟机上安装centos2.1安装步骤: 前言: 操作系统有:windows server 不开源的收费的、linux 开源的免费的,精简安装(没有UI)。国产的操作系统有&am…

#前后端分离# 头条发布系统

头条业务简介 用户功能 注册功能登录功能jwt实现 新闻 新闻的分页浏览通过标题关键字搜索新闻查看新闻详情新闻的修改和删除 预览界面 开源上线 https://gitcode.net/NVG_Haru/NodeJS_5161447 数据库设计 数据库脚本 CREATE DATABASE sm_db;USE sm_db;SET NAMES utf8mb4…

Spark的错误处理与调试技巧

Apache Spark是一个强大的分布式计算框架,用于处理大规模数据。在开发和运行Spark应用程序时,经常会遇到各种错误和问题。了解Spark的错误处理与调试技巧是解决这些问题的关键。本文将深入探讨Spark中常见的错误类型、调试工具和技巧,并提供丰…

软件测试/测试开发丨Python 内置库 正则表达式re

什么是正则表达式 正则表达式就是记录文本规则的代码可以查找操作符合某些复杂规则的字符串 使用场景 处理字符串处理日志 在 python 中使用正则表达式 把正则表达式作为模式字符串正则表达式可以使用原生字符串来表示原生字符串需要在字符串前方加上 rstring # 匹配字符…

[C#]C# winform实现imagecaption图像生成描述图文描述生成

介绍: 地址:C#https://github.com/ruotianluo/ImageCaptioning.pytorch 效果: 测试环境: vs2019 onnxruntime1.16.3 opencvsharp4.8 代码: using System; using System.Collections.Generic; using System.Comp…

网络故障排查和流量分析利器-Tcpdump命令

Tcpdump是一个在Unix/Linux系统上广泛使用的命令行网络抓包工具。它能够捕获经过网络接口的数据包,并将其以可读的格式输出到终端或文件中。Tcpdump是一个强大的命令行工具,能够捕获和分析网络数据包,为网络管理员和安全专业人员提供了深入了…

Linux权限的基本理解

一:🚩Linux中的用户 1.1🥦用户的分类 🌟在Linux中用户可以被分为两种用户: 超级用户(root):可以在Linux系统中做各种事情而不被约束普通用户:只能做有限的事情被权限约束 在实际操作时超级用户的命令提示符为#,普通用户的命令提示符为$,可…

基于JWT的用户token验证

1. 基于session的用户验证 2. 基于token的用户身份验证 3. jwt jwt代码实现方式 1. 导包 <dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.18.2</version> </dependency> 2. 在登录…

androidStudio 没有新建flutter工程的入口?

装了flutter dart 插件 执行了 flutter doctor 也执行了 flutter doctor --android-license 最后重启了 androidStudio 还是没发现在哪新建flutter项目工程 原来 plugins 下的 Android APK Support没有勾选

gitLab页面打tag操作步骤

作者&#xff1a;moical 链接&#xff1a;gitLab页面打tag简单使用 - 掘金 (juejin.cn) 来源&#xff1a;稀土掘金 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 ---------------------------------------------------------------------…

微服务(1)

目录 1.什么是微服务&#xff1f;谈谈你对微服务的理解&#xff1f; 2.什么是Spring Cloud&#xff1f; 3.Springcloud中的组件有哪些&#xff1f; 3.具体说说SpringCloud主要项目&#xff1f; 5.SpringCloud项目部署架构&#xff1f; 1.什么是微服务&#xff1f;谈谈你对微…

2024年PMP考试新考纲-PMBOK第七版-【模型、方法和工件】真题解析(2)

今天我们继续来看第七版PMBOK第四部分【模型、方法和工件】这个章节相关的真题。 实际上在做题的时候&#xff0c;可能有的小伙伴会发现&#xff0c;这部分和第六版PMBOK中散落在各个知识领域的题目很相似。没错&#xff01;在之前版本的PMBOK中&#xff0c;很经典的框架是每个…