结构体类型转化为json格式

package main

import (
	"encoding/json"
	"fmt"
)

//如果要转化成json格式,那么成员变量名的首字母必须要大写
type Girl struct {
	Name string
	Age int
	gender byte //故意不大写
}
func main(){
	girl := Girl{"satori", 18, 'f'}
	buf, err:=json.Marshal(girl)
	if err != nil{
		fmt.Println(err)
	}
	fmt.Println(string(buf)) //{"Name":"satori","Age":18}
	//还有一个格式化输出
	buf1,_ := json.MarshalIndent(girl, "", " ")
	fmt.Println(string(buf1))
	/*
	{
 	 "Name": "satori",
	 "Age": 18
	}
	 */
}
package main

import (
	"encoding/json"
	"fmt"
)

//如果要转化成json格式,那么成员变量名的首字母必须要大写
//但是也可以转成小写
type Girl struct {
	Name string `json:"name"`
	Age int `json:"age"`
	Anime string `json:"-"` //"-"表示不会输出到屏幕
	Loveme bool `json:",string"`//",string"表示转化成字符串输出
	gender byte //因为只有大写才可以转成json,那么我们这里是小写,既然转不成json,那么也就不支持`json:"xxx"`这种结构了
}
func main(){
	girl := Girl{"satori", 18, "东方地灵殿",true,'f'}
	buf,_:=json.Marshal(girl)
	fmt.Println(string(buf))//{"name":"satori","age":18,"Loveme":"true"}
}

map类型转化为json格式

package main

import (
	"encoding/json"
	"fmt"
)

func main(){
	m:=make(map[string]interface{})
	m["name"]="satori"
	m["age"]=18
	m["gender"]='f'
	m["anime"]="东方地灵殿"

	buf,_ := json.MarshalIndent(m,""," ")
	fmt.Println(string(buf))
	/*
	{
	 "age": 18,
	 "anime": "东方地灵殿",
	 "gender": 102,
	 "name": "satori"
	}
	 */
}

  

json转化为结构体

package main

import (
	"encoding/json"
	"fmt"
)

type GGirl struct {
	Name string `json:"name"`
	Age int `json:"age"`
	Anime string `json:"anime"`
	Loveme bool `json:"loveme"`
}
func main(){
	var girl GGirl
	jsonBuf:=`{
 "name":"satori",
 "age": 18,
 "anime": "东方地灵殿",
 "loveme":true
}`
err := json.Unmarshal([]byte(jsonBuf),&girl)
if err!=nil{
	fmt.Println("err=", err)
	return
}
fmt.Println(girl)//{satori 18 东方地灵殿 true}

}

  

package main

import (
	"encoding/json"
	"fmt"
)

//如果结构体的成员不够
type GGirl struct {
	Name string `json:"name"`
}
func main(){
	var girl GGirl
	jsonBuf:=`{
 "name":"satori",
 "age": 18,
 "anime": "东方地灵殿",
 "loveme":true
}`
err := json.Unmarshal([]byte(jsonBuf),&girl)
if err!=nil{
	fmt.Println("err=", err)
	return
}
//成员不够,会解析一部分
fmt.Println(girl)//{satori}

}

  

  

json转化为map

package main

import (
	"encoding/json"
	"fmt"
)

func main(){
	jsonBuf :=`{
	"name":"satori",
	"age":18,
	"gender":"f",
	"anime":"东方地灵殿"
}`
	m:=make(map[string]interface{})
	//取地址,把jsonBuf传到m里面去
	err:=json.Unmarshal([]byte(jsonBuf), &m)
	if err!=nil{
		fmt.Println("err=",err)
		return
	}
	fmt.Println(m)//map[name:satori age:18 gender:f anime:东方地灵殿]
}

  

go语言中的json的更多相关文章

  1. JS语言中的JSON.parse()和JSON.stringify()

    parse()用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age":& ...

  2. C语言中,头文件和源文件的关系(转)

    简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句, ...

  3. C 语言中 setjmp 和 longjmp

    在 C 语言中,我们不能使用 goto 语句来跳转到另一个函数中的某个 label 处:但提供了两个函数——setjmp 和 longjmp来完成这种类型的分支跳转.后面我们会看到这两个函数在处理异常 ...

  4. c语言中的scanf在java中应该怎么表达,Scanner类。

    1 java是面向对象的语言 它没有像C语言中的scanf()函数,但是它的类库中有含有scanf功能的函数 2 java.util包下有Scanner类 Scanner类的功能与scanf类似 3 ...

  5. C语言中do...while(0)的妙用(转载)

    转载来自:C语言中do...while(0)的妙用,感谢分享. 在linux内核代码中,经常看到do...while(0)的宏,do...while(0)有很多作用,下面举出几个: 1.避免goto语 ...

  6. C语言中,定义的含义?声明的含义?它们之间的区别是什么?

    在C语言中,对于定义和声明,也许我们非常的熟悉,但不一定真正的了解! 定义的含义:所谓定义,就是创建(编译器)一个对象,为这个对象分配一块内存空间并取名,也就是我们平常所说的变量名或对象名,一旦这个名 ...

  7. C++中函数的默认参数和C语言中volatile的学习

    1.函数默认参数 1 int func(int a,int b=10) 2 { 3 return a*b; 4 } 5 6 int main() 7 { 8 int c=func(2); 9 cout ...

  8. C语言中qsort函数用法

    C语言中qsort函数用法-示例分析    本文实例汇总介绍了C语言中qsort函数用法,包括针对各种数据类型参数的排序,非常具有实用价值非常具有实用价值. 分享给大家供大家参考.C语言中的qsort ...

  9. c语言中time相关函数

    工作中遇到的函数: int seed = time(NULL); srand(seed); signal(SIGINT, stop); signal(SIGUSR1, sig_usr1); 搜time ...

随机推荐

  1. 链上链下交互 以太坊Dapp接口开发

    主要是指的是用NodeJs调用 提供接口供前端使用 用户查询和转账 以太坊Dapp项目 众筹项目 功能需求 路人 查看所有众筹项目, 2 @ OK 根据众筹项目的address获取该众筹的详情 (参与 ...

  2. Julia 学习笔记(一):数组

    个人向,只会记录一些需要注意的点. 前言 学习 Julia 已经有一段时间了,但是进步缓慢.这一方面是最近代码写得少,一方面是 Julia 学习资料少.中文资料更少,但也有我没做笔记的缘故导致学习效率 ...

  3. 【iOS开发】多线程下NSOperation、NSBlockOperation、NSInvocationOperation、NSOperationQueue的使用

    http://blog.csdn.net/crycheng/article/details/21799611 本篇文章主要介绍下多线程下NSOperation.NSBlockOperation.NSI ...

  4. htm,html,xhtml,xml,xsl,dhtml,shtm和shtml的区分

    介绍一下htm,html,xhtml,xml,shtml的区分,以下内容来自百度后的知识整理. HTML和htm: HTML(Hypertext Markup Language)超文本传输语言,是ww ...

  5. Spring Boot学习(二):配置文件

    目录 前言 方式1:通过配置绑定对象的方式 方式2:@Value("${blog.author}")的形式获取属性值 相关说明 注解@Value的说明 参考 前言 Spring B ...

  6. hash function比较

    http://blog.csdn.net/kingstar158/article/details/8028635 由于工作需要,针对千万级别的数据,使用stl::map着实存在着效率问题,最后使用bo ...

  7. Linux建立FTP服务器

    http://blog.chinaunix.net/uid-20541719-id-1931116.html http://www.cnblogs.com/hnrainll/archive/2011/ ...

  8. akka与slf4j导致jvm直接crash的诡异

    流程很简单,创建actorSystem,通过actorSystem获取AkkaQueryServiceRetriever,进而通过传递path获得的Gateway进行通信. 之前在主项目里跑的很稳定, ...

  9. php数据缓存到文件类设计

    // 自定义缓存类 class Cache_Filesystem { // 缓存写保存 function set ($key, $data, $ttl) { //打开文件为读/写模式 $h = fop ...

  10. BZOJ4424/CF19E Fairy(dfs树+树上差分)

    即删除一条边使图中不存在奇环.如果本身就是个二分图当然任意一条边都可以,先check一下.否则肯定要删除在所有奇环的交上的边. 考虑怎么找这些边.跑一遍dfs造出dfs树,找出返祖边构成的奇环.可以通 ...