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键值对对象
随机推荐
- c#发送短信
短息计费平台:http://sms.webchinese.cn/User/?action=key 代码: using System;using System.Collections.Generic;u ...
- Android自定义view(一):制作一个最最最简单的自定义view
转载:https://blog.csdn.net/wsyizmao/article/details/78491422 浅谈安卓自定义view(一):制作一个最最最简单的自定义view 对于安卓程序员来 ...
- 31-mysql 代码建立数据库
给个例子,模仿即可: drop database if exists tt; create database tt default character set utf8; use tt; create ...
- 小程序循环多个picker选择器,实现动态增、减
现象 循环picker选择器,改变一个下拉框选项,导致全部下拉框选项改变: 问题 怎样操作才能实现只改变当前操作的下拉框的值? 思路 在js中设置一个数组变量,存储每个picker选择器默认的值:然后 ...
- go流程控制与函数
package main; import ( "fmt" ); func main() { isRun := true; //条件判断 if isRun { fmt.Printf( ...
- springboot项目maven报错 LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback
完整信息如下 SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/D:/deve ...
- B+树与B-树
前面已经介绍过B-树,接下来,我们主要介绍一下B+树. 1.B+树的概念 B+树是应文件系统所需而生的一种B-树和变形树.一棵m阶B+树和m阶的B-树的差异在于: (1)有n棵子树的结点中含有n个关键 ...
- SQL删除重复数据只保留一条数据
1.表结构与数据: CREATE TABLE tablezzl( id int, name ) ); 2.查询出重复的数据: 3.查询出要保留的重复数据: 4.最终的SQL: DELETE FROM ...
- CentOS 7系统关闭yum自动下载更新
安装CentOS 7后,系统yum自动更新状态默认为开启,若禁止系统自动更新需要手动关闭. 1.进入yum目录 [root@localhost ~]$ cd /etc/yum 2.编辑yum-cron ...
- Hadoop(四)shell脚本定时采集日志数据到hdfs
#!/bin/bash #set java envexport JAVA_HOME=/wocloud/java/jdk1.7.0_45export JRE_HOME=${JAVA_HOME}/jree ...