当前位置: 首页 > news >正文

golang 复杂数据结构解析

[{"key":"15275771","pack":{"1":[{"name":"消息配置","id":15275771,"version":1,"createUser":"molaifeng","data":"test"}]},"callback":"http://your-seervice-domain/msg/callback"}
]

上面的 json 该如何解析,或是对方需要传输此 json 数据,该如何构造。

最简单的方法就是善用工具,比如 json2go ,给出如下 struct 结构

type AutoGenerated []struct {Key string `json:"key"`Pack Pack `json:"pack"`Callback string `json:"callback"`
}
type Num1 struct {Name string `json:"name"`ID int64 `json:"id"`Version int `json:"version"`CreateUser string `json:"createUser"`Data string `json:"data"`
}
type Pack struct {Num1 []Num1 `json:"1"`
}

不过,仔细看 json 里的 pack 字段,也可以用 map 构造,而且更简单

type DataPack struct {Key string `json:"key"`Pack MapListDataPack `json:"pack"`Callback string `json:"callback"`
}type MapListDataPack map[string][]*ListDataPacktype ListDataPack struct {Name string `json:"name"`ID int64 `json:"id"`Version int `json:"version"`CreateUser string `json:"createUser"`Data string `json:"data"`
}

完整的示例为

package mainimport ("encoding/json""fmt"
)type DataPack struct {Key      string          `json:"key"`Pack     MapListDataPack `json:"pack"`Callback string          `json:"callback"`
}type MapListDataPack map[string][]*ListDataPacktype ListDataPack struct {Name       string `json:"name"`ID         int64  `json:"id"`Version    int    `json:"version"`CreateUser string `json:"createUser"`Data       string `json:"data"`
}func main() {str := `[{"key":"15275771","pack":{"1":[{"name":"消息配置","id":15275771,"version":1,"createUser":"molaifeng","data":"test"}]},"callback":"http://your-seervice-domain/msg/callback"}]`dataPacks := make([]DataPack, 0)err := json.Unmarshal([]byte(str), &dataPacks)if err != nil {fmt.Println(err)return}fmt.Println(dataPacks)}

总之就是一句话,对于构造复杂的数据结构时,需要用到 map,而不是单纯依靠 slice 及基础结构体。

相关文章:

golang 复杂数据结构解析

[{"key":"15275771","pack":{"1":[{"name":"消息配置","id":15275771,"version":1,"createUser":"molaifeng","data":"test"}]},"callback&qu…...

不怕被AirTag跟踪?苹果Find My技术越来越普及

苹果的 AirTag 自推出以来,如何有效遏制用户用其进行非法跟踪,是摆在苹果面前的一大难题。一家为执法部门制造无线扫描设备的公司近日通过 KickStarter 平台,众筹了一款消费级产品,可帮助用户检测周围是否存在追踪的 AirTag 等设备…...

Linux驱动中的open函数是如何从软件打通硬件呢?

一、前言 打开文件是Linux系统中最基本的操作之一,open函数可以实现打开文件的功能。下面我将为您介绍open函数打通上层到底层硬件的详细过程。 二、open函数打通软硬件介绍 open函数是系统调用中的一种,其原型定义在头文件unistd.h中: #…...

Java 基础语法

Java 是一门广泛使用的编程语言,由于其简单易学和可移植性,已成为开发 Web 应用程序、移动应用程序、桌面应用程序以及企业级应用程序的首选语言之一。在本文中,我们将探讨 Java 的基础语法,包括变量、数据类型、运算符、控制流等…...

python下如何安装并使用matplotlib(画图模块)

在搜索命令中输入cmd,以管理员身份运行。 输入以下命令,先对pip安装工具进行升级 pip install --upgrade pip 升级完成 之后使用pip安装matplotlib pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple 也可以使用pycharm来安装matp…...

系统分析师---计算机网络思维导图

TCP、IP协议簇(4星) 传输协议:TCP有连接、可靠、有回应机制、三次握手基于TCP的应用层协议:POP3:邮件收取,默认端口110SMTP:邮件发送,默认端口25FTP:文件传输协议&#…...

算法练习(七)数据分类处理

一、数据分类处理 1、题目描述: 信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、 QQ 用户、手机号码、银行帐号等信息及活动记录。采集输入大数据和分类规则,通过大数据分类处理程序,将大数据分类输出…...

nohup ./startWebLogic.sh >out.log 2>1 解析

在启动weblogic的时候我们经常看到如下的命令: nohup ./startWebLogic.sh >out.log 2>&1 & 从09年开始用weblogic到现在已经过去3年多了 ,今天终于将该命令理解清楚了。 其中 0、1、2分别代表如下含义: 0 – stdin (standa…...

OpenCV 坡度计算(基于DEM,C++版本)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 假设一个点位于曲面 z = f ( x , y ) z=f(x,y) z=...

IDEA上使用git,知道这几步操作就够了!

前言由于一年多没用git(种种原因不堪回首),所以在上班当天,整个人都不好了,从拉取代码到提交代码,整整花费了不少时间,而且有些操作都不知道啥作用,点也不是,不点也不是&…...

Shell的退出状态(if语句判断的是某个命令的退出状态)

以下内容源于C语言中文网的学习与整理,如有侵权,请告知删除。 一、退出状态 (1)不管是 Bash 内置命令,还是外部的 Linux 命令,还是自定义的 Shell 函数,当它运行结束或者退出时,都…...

Scala面向对象

与java的区别和联系 类的定义: class Person{ var name "scala" def sayHello(){ println("Hello,"name) } def getName name } 注意:如果在定义方法的时候指定了(),那么在调用的时候()可写可不写,如果在定…...

LLaMA-META发布单卡就能跑的大模型

2023年2月25日,Meta使用2048张A100 GPU,花费21天训练的Transformer大模型LLaMA开源了。 1.4T tokenstakes approximately 21 days 以下是觉得论文中重要的一些要点 1)相对较小的模型也可以获得不错的性能 研究者发现在给定计算能力限制的情…...

第一篇自我介绍(单片机)

小白的单片机之旅 🤔自我介绍🤔 😊学习目标😊 😜关于单片机😜 🌝目标公司🌝 🍀小结🍀 🎉博客主页:小智_x0___0x_ 🎉欢…...

Tik Tok品牌营销,如何做好内容打法

TikTok 上做好品牌营销,并不能只关注品牌所获得的视频浏览量和点赞量,根据潜在客户需求生成的内容策略同样至关重要。通过建立营销漏斗模型,可以将 TikTok 策略分为三种不同类型的内容,从具有广泛吸引力的内容转变为具有高度针对性…...

2023年5月软考软件设计师备考经验

一、考试目标: 通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程序员编写、调试程序,并对软件进行优化和集成…...

SpringBoot 2.x ——使用 mail 实现邮件发送

文章目录前言环境、版本等pom依赖引入springboot项目配置文件获取邮箱授权码配置properties文件定义接口信息接收类编写邮件发送服务类编写接口swagger测试1、简单邮件发送2、html格式发送(支持附件)前言 最近再看xxl-job的源码,其中在邮件告警通知中使用到了告警信…...

项目结束先别着急庆祝,项目经理还有这些事要做

项目管理生命周期结束阶段的目的是确认项目可交付成果的完成,使项目发起人满意,并向所有参与者和利益相关者传达项目的最终处置和状态。 项目结束确保项目的所有参与者和利益相关者都清楚后续活动(如新项目、服务过渡、SLA等)&a…...

没想到的 IIFE

没想到的 IIFE 有时候我们想要立即执行一下所定义的函数,可以怎么做呢? function foo(num) {return num ?? 1; }foo();写完然后调用对吧,这是可以的,但你有没有觉得这其实有点脱裤子放屁了,完全可以直接调用就是了…...

「牛客网C」初学者入门训练BC156

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练 🔥座右铭:“不要等到什么都没有了,才下定决心去做” 🚀🚀🚀大家觉不错…...

5分钟快速上手:AMD Ryzen处理器专业级调试工具SMUDebugTool完全指南

5分钟快速上手:AMD Ryzen处理器专业级调试工具SMUDebugTool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址…...

从电话到流媒体:聊聊G.711、G.726这些老牌音频编码为啥还在用?

从电话到流媒体:G.711与G.726音频编码的生存之道 在数字音频技术日新月异的今天,MP3、AAC、Opus等现代编码格式早已成为流媒体和消费级应用的标配。然而,当你拆开一台最新的IP电话机,或是调试某款工业级语音设备时,大概…...

ROS2进阶实践 -- 从零构建模块化差速机器人模型 -- 掌握xacro宏定义与参数化设计

1. 为什么需要xacro宏定义与参数化设计 当你第一次用URDF给机器人建模时,可能会觉得这种XML格式的描述方式很直观。但随着模型复杂度提升,问题就来了——我最近给一个差速机器人添加传感器时,发现URDF文件膨胀到了500多行,其中光是…...

思科CCNA认证备考:从题库到实战,这11个章节的易错点你踩过几个?

思科CCNA认证通关指南:11大核心章节的深度避坑策略 从题库到实战的认知跃迁 当您翻开CCNA的备考资料时,是否曾感到困惑——即使熟记题库答案,在实际操作和模拟考试中仍频频出错?这种现象在认证考生中极为普遍。问题的根源往往不在…...

【免费下载】 JIRA用户操作指南(详细版)

JIRA用户操作指南(详细版) 【下载地址】JIRA用户操作指南详细版 JIRA用户操作指南(详细版)欢迎使用JIRA用户操作指南,本指南旨在帮助您全面理解并高效地使用JIRA这一强大的问题跟踪与项目管理工具 项目地址: https:/…...

5分钟掌握STDF-Viewer:半导体测试数据分析的图形化神器

5分钟掌握STDF-Viewer:半导体测试数据分析的图形化神器 【免费下载链接】STDF-Viewer A free GUI tool to visualize STDF (semiconductor Standard Test Data Format) data files. 项目地址: https://gitcode.com/gh_mirrors/st/STDF-Viewer STDF-Viewer是一…...

2025最新 SpringCloud 教程,Seat-原理-四种事务模式,总结,笔记72,笔记73

2025最新 SpringCloud 教程,Seat-原理-四种事务模式,总结,笔记72,笔记73 一、参考资料 Seat-原理-四种事务模式 🔗 总结 🔗 二、笔记总结...

SFT与RL:AI训练的黄金搭档,何时介入才能事半功倍?

本文探讨了SFT(监督微调)和RL(强化学习)在AI训练中的协同作用。SFT负责建立模型的基础能力,确保其遵循格式和指令;RL在此基础上优化输出质量,使其更符合人类使用习惯。文章详细分析了何时进行RL…...

如何快速掌握炉石传说游戏自动化:开源智能助手完整教程

如何快速掌握炉石传说游戏自动化:开源智能助手完整教程 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script 你是否厌倦了每天重复的炉石传说日常…...

限时开放|Perplexity学术搜索私藏工作区(含18个学科定制模板+实时更新的期刊影响因子映射表)

更多请点击: https://kaifayun.com 第一章:Perplexity学术搜索的核心价值与适用场景 Perplexity.ai 并非传统搜索引擎,而是一个融合大语言模型推理能力与实时学术信息检索的智能研究协作者。其核心价值在于将“提问—验证—溯源”闭环内化为…...