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. swift - label字体 倾斜,加粗

    /* label.font = [UIFont fontWithName:@"Helvetica-Bold" size:20];//加粗 label.font = [UIFont ...

  2. swift - 使用系统app导航

    import UIKit //1.导入框架 import MapKit class ViewController: UIViewController { lazy var geoCoder : CLG ...

  3. listView 解决焦点冲突问题 item项和子控件之间的冲突

    listView 在item布局的顶级布局中设置 android:descendantFocusability="blocksDescendants"可以阻止子控件获取焦点 这样使 ...

  4. javascript中的类型转换(进制转换|位运算)

    1:parseInt(string) : 这个函数的功能是从string的开头开始解析,返回一个整数 parseInt("123hua"); //输出 123 parseInt(& ...

  5. webstorm安装配置

    1.webstorm是一款优秀的前端设计工具,在官网下载webstorm.exe文件 官网地址:http://www.jetbrains.com/webstorm/ 2.一直next执行下一步进行安装 ...

  6. dataTables的学习笔记 -- 未开启服务器数据模式

    官方网站:http://www.datatables.net/ (1)未开启服务器数据模式(即"bServerSide" : false),数据会从后台直接全部获取,然后在前台全部 ...

  7. guide dpdk

    Welcome to DPDK Guide! Contents: Setting up DPDK Important Prerequisites Setting up repositories Red ...

  8. 758B Blown Garland

    B. Blown Garland time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  9. javascript 高级程序设计 一

    前言: 作为一个即将毕业.正在实习的大学生,我也默默的进入了开发者的行列.从一开始的c#编码狗到java程序员再到现在的JS开发者,我一直 希望自己可以在这个'万恶'的互联网时代走的更远.但是我还是一 ...

  10. invalid END header解决方法

    我在Windows上的eclipse开发了一个java web项目,然后压缩成war包,通过ftp发送到Linux服务器上,Tomcat先shutdown,再startup.按理说,会在webapps ...