Go语言高级特性总结——Struct、Map与JSON之间的转化
Struct与Map之间互相转换
// Struct2Map convert struct to map
func Struct2Map(st interface{}) map[string]interface{} {
vt := reflect.TypeOf(st)
vv := reflect.ValueOf(st)
var data = make(map[string]interface{})
for i := ; i < vt.NumField(); i++ {
f := vt.Field(i)
v := vv.Field(i)
chKey := f.Tag.Get("json")
switch v.Kind() {
case reflect.String:
if s, ok := v.Interface().(string); ok && s != "" {
data[chKey] = s
}
case reflect.Int:
if i, ok := v.Interface().(int); ok && i != {
data[chKey] = i
}
case reflect.Struct:
if t, ok := v.Interface().(time.Time); ok && t != (time.Time{}) {
data[chKey] = t
}
case reflect.Uint64:
if u64, ok := v.Interface().(uint64); ok && u64 != {
data[chKey] = u64
}
case reflect.Uint:
if u, ok := v.Interface().(uint); ok && u != {
data[chKey] = u
}
default:
log.Error("unsupport common query type: " + string(chKey))
}
}
return data
}
JSON与Map之间的转换
// JSONString2Map convert struct to map
func JSONString2Map(str string) (map[string]string, error) {
result := make(map[string]string)
err := json.Unmarshal([]byte(str), &result)
return result, err
}
Map与JSON之间的转换
// Map2JSON conver map to json
func Map2JSON(jsonmap map[string]string) (string, error) {
jbytes, err := json.Marshal(jsonmap)
return string(jbytes), err
}
Go语言高级特性总结——Struct、Map与JSON之间的转化的更多相关文章
- go语言之进阶篇通过map生成json
1.通过map生成json 示例1: package main import ( "encoding/json" "fmt" ) func main() { / ...
- map和json之间的转换
Action中在session中存放了一个map<String,Object>,跳转到a.jsp,a.jsp通过form提交到BAction,BAction可从session中获得map值 ...
- Java处理JSON的工具类(List、Map和JSON之间的转换)——依赖jsonlib支持Map嵌套
原文链接:http://www.itjhwd.com/java_json/ 代码 package com.itjh.mmp.util; import java.io.BufferedReader; i ...
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_1_Map集合概述
map集合是双列集合 map有两个泛型.左边K也叫作键 右边V是value
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_3_Map接口中的常用方法
这个方法比较特殊,它的返回值是V他也就是Vlaue get remove containsKey: put value没有重复的所以v1返回的是null key值有重复,所以会返回被替换的值,范冰冰1 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_11_JDK9对集合添加的优化_of方法
用了of后集合的长度不能再改变!!!!! set不允许有重复元素 所以会抛出异常 重复的数据删掉就不报错. 改变长度 同样会报错. Map的key不允许有重复
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_2_Map常用子类
常用的实现类HashMap 它的子类.LinkedHaspMap
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_4_Map集合遍历键找值方式
键找值的方式 增强for 增强for的简化方式
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_5_Entry键值对对象
随机推荐
- json的内容回顾
复习一下json这个模块 import json s = '{"name":"cui","age":12}' # 这里外部必须是单引号,内部 ...
- sqlserver中为节约存储空间的收缩数据库机制
1.收缩数据库: 删除数据库的每个文件中已经分配单还没有使用的页,首座后数据库空间自动减少 2.收缩方式: (1)自动收缩数据库 选中数据库--->右击--->属性 在常规这里我们可以看到 ...
- sql backup
create or replace procedure P_updateasbegin update security_price p set p.closing_price = (select MI ...
- C#使用MiniDump捕获异常
c/c++语言里MiniDump是一个重要的调试手段,他们没有C#/java这样语言有很多异常输出信息( JVM异常导出bug日志功能,通常在jdk目录,文件格式hs_err_%pid%.log,pi ...
- python 验证码 和进度条
import random def make_code(n): res='' for i in range(n): s1=chr(random.randint(65,90)) s2=str(rando ...
- pyspider入门
1.http://www.pyspider.cn/jiaocheng/pyspider-webui-12.html 2.https://blog.csdn.net/weixin_37947156/ar ...
- C# 关闭进程的时候总是捕捉到System.Threading.ThreadAbortException: 正在中止线程
C# 关闭进程的时候总是捕捉到System.Threading.ThreadAbortException: 正在中止线程 这是由ThreadAbortException抛出的 可以写成下面的样子 tr ...
- hdu 1983(BFS+DFS) 怪盗Kid
http://acm.hdu.edu.cn/showproblem.php?pid=1983 首先,题目要求出口和入口不能封闭,那么,只要把出口或入口的周围全给封闭了那盗贼肯定无法成功偷盗,出口或入口 ...
- BZOJ1217或洛谷2279 [HNOI2003]消防局的设立
BZOJ原题链接 洛谷原题链接 该题有两种做法,树形\(DP\)和贪心. 先讲贪心. 先将所有点按深度从大到小排序,然后从大到小依次取出点,若已经被覆盖则跳过,否则就在它的祖父点建立消防站. 考虑如何 ...
- android xml解析中的null问题
当我们从服务器或者xml文件加载xml进行解析的时候,往往报告 nullpointer 错误.这是原始代码: String short_name = doc.getElementsByTagName( ...