go json反序列化成指定类型

2024-09-08 06:04
文章标签 类型 go 指定 json 序列 化成

本文主要是介绍go json反序列化成指定类型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

简单的介绍一下使用go的json库,将json字符串反序列化成接口中指定的实现类

代码如下

package usejsontype ExamInterface interface {CheckRule(data any) bool
}type IntStru struct {DefalutVal int `json:"defalut_val"`Max        int `json:"max"`Min        int `json:"min"`
}func (i IntStru) CheckRule(data any) bool {if data.(int) < i.Max && data.(int) > i.Min {return true}return false
}func (i IntStru) New() {}type StringStru struct {DefaultVal string `json:"default_val"`Len        int    `json:"len"`
}func (s StringStru) CheckRule(data any) bool {if len(data.(string)) > s.Len {return false}return true
}
func (s StringStru) New() {}

测试用例

package usejsonimport ("encoding/json""fmt""testing"
)func TestRule(t *testing.T) {val := "{\"int\":{\"defalut_val\":0,\"max\":500,\"min\":30}}"var exam = map[string]interface{}{}err := json.Unmarshal([]byte(val), &exam)if err != nil {panic(err)}if val, ok := exam["int"]; ok {data, _ := json.Marshal(val)intr := &IntStru{}json.Unmarshal(data, intr)fmt.Println(intr.CheckRule(3))}val = "{\"string\":{\"default_val\":\"\",\"len\":3}}"err = json.Unmarshal([]byte(val), &exam)if err != nil {panic(err)}if val, ok := exam["string"]; ok {data, _ := json.Marshal(val)intr := &StringStru{}json.Unmarshal(data, intr)fmt.Println(intr.CheckRule("333"))}
}func TestMashal(t *testing.T) {s := StringStru{Len: 3}data, _ := json.Marshal(s)fmt.Println(string(data))i := IntStru{Max: 500, Min: 30}data, _ = json.Marshal(i)fmt.Println(string(data))
}

总结

其实主体逻辑在测试用例中,根据json字符串中特定字符串确定是将json串解析成何种子类,逻辑比较简单。

这篇关于go json反序列化成指定类型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147315

相关文章

go 指针接收者和值接收者的区别小结

《go指针接收者和值接收者的区别小结》在Go语言中,值接收者和指针接收者是方法定义中的两种接收者类型,本文主要介绍了go指针接收者和值接收者的区别小结,文中通过示例代码介绍的非常详细,需要的朋友们下... 目录go 指针接收者和值接收者的区别易错点辨析go 指针接收者和值接收者的区别指针接收者和值接收者的

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio