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之间的转化的更多相关文章

  1. go语言之进阶篇通过map生成json

    1.通过map生成json 示例1: package main import ( "encoding/json" "fmt" ) func main() { / ...

  2. map和json之间的转换

    Action中在session中存放了一个map<String,Object>,跳转到a.jsp,a.jsp通过form提交到BAction,BAction可从session中获得map值 ...

  3. Java处理JSON的工具类(List、Map和JSON之间的转换)——依赖jsonlib支持Map嵌套

    原文链接:http://www.itjhwd.com/java_json/ 代码 package com.itjh.mmp.util; import java.io.BufferedReader; i ...

  4. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_1_Map集合概述

    map集合是双列集合 map有两个泛型.左边K也叫作键 右边V是value

  5. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_3_Map接口中的常用方法

    这个方法比较特殊,它的返回值是V他也就是Vlaue get remove containsKey: put value没有重复的所以v1返回的是null key值有重复,所以会返回被替换的值,范冰冰1 ...

  6. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_11_JDK9对集合添加的优化_of方法

    用了of后集合的长度不能再改变!!!!! set不允许有重复元素 所以会抛出异常 重复的数据删掉就不报错. 改变长度 同样会报错. Map的key不允许有重复

  7. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_2_Map常用子类

    常用的实现类HashMap 它的子类.LinkedHaspMap

  8. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_4_Map集合遍历键找值方式

    键找值的方式 增强for 增强for的简化方式

  9. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_5_Entry键值对对象

随机推荐

  1. mysql定时删除6个月前的表

    查看定时是否开启: 查看event是否开启 : SHOW VARIABLES LIKE '%event_sche%'; 将事件计划开启 : ; 将事件计划关闭 : ; 代码: BEGIN -- 保存表 ...

  2. cloud server ribbon 自定义策略配置

    虽然ribbon默认为我们提供了多钟负载均衡策略,但有时候我们仍然需要自定义符合自身业务逻辑的规则 使用配置文件的方式:我们只需要在配置文件中添加配置 serviceId.ribbon.NFLoadB ...

  3. day 17 re模块

    RE模块 import re 对一个大篇幅的字符串,按照你的规则找出想要的字符串 # 单个字符匹配 import re # \w 与 \W #字母数字下划线, 非 # print(re.findall ...

  4. Redhat(RHEL)配置静态IP

    vim /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=itcc.dev GATEWAY=192.168.0.1 v ...

  5. Windows下PythonQt编译(vs2015+Qt5.11.2+PythonQt 3.2)

    后记: 由于自己low,没有下载罪行的python3.2导致编译上遇到种种问题,后文可以参考,建议看: <Windows7 VS2015 下编译 PythonQt3.2> https:// ...

  6. C# devexpress gridcontrol 分页 控件制作

    这个小小的功能实现起来还是有一点点复杂, 分页单独一个usercontrol 出来,导致查询换页 与gridcontrol页面分离,  一般通过换页事件通知girdcontrol 做出查询 查询来说有 ...

  7. ZBlog你选择PHP还是ASP?

    最近趁着空闲玩了一下zblog,对于很多第一次接触zblog的博主大多都会问zblog是PHP好还是ASP好?我们应该如何选择?其实,对于这个问题我也不是很懂,我个人比较倾向于PHP.今天我就整理一下 ...

  8. Linux vps服务器国产面板wdcp的安装和使用方法

    对于大多数站长来说,稳定的服务器不可或缺,这是我做网站以来的深刻体会,因为之前我在网站运营方面因这个原因吃了很多亏.在这里说出,只希望朋友们不要像我一样.在网站优化过程中,服务器因素导致排名下滑,甚至 ...

  9. ubuntu下firefox打开mht文件

    1.安装firefox插件:UnMHT 插件地址:http://www.unmht.org/unmht/en_index.html 2.用firefox打开mht文件

  10. delphi新手到高手的工具--castalia

    castalia翻译是 神泉 ,是delphi的一个优秀第三方工具.其重构功能尤为突出.代码实时编译提示也很棒. 自卑delphi开发工具没有eclipse那么强大的提示?有castalia为你提升信 ...