另一方面,Json和struct互换
)1)从Json迁移到struct的示例:
打包主
import (
' fmt '。
'编码/strong森'
)
类型人造结构
名称字符串` JSon : '名称_标题`
Age int `json:'age_size `
}
func JsonToStructDemo
jsonStr :=`
{
'名称_标题' : ' jqw '
' age_size':12
}
`
太空望远镜
JSON.unmarshal ([ ]字节(JSON str ),皮奥普尔) )。
FMT.Println (人物) )。
}
功能主()
使用JsonToStructDemo (
}
输出:
请注意,json中的关键点和结构中的关键点匹配。 结构中key的首字母必须大写,但json可以是大写或小写。
)2)从结构到json
在结构中引入tag标签以进行这样的匹配时,与json字符串相对应的字段名称必须与tag标签中定义的字段名称相匹配。 当然,在tag中定义的名称不需要大写,对应的json字符串的字段名称保持大小写不敏感。 此时,结构体中的对应字段名可以与匹配不一致,但首字母必须是大写字母,只有大写字母可以对外访问。
示例:
打包主
import (
' fmt '。
'编码/strong森'
)
类型人造结构
名称字符串` JSon : '名称_标题`
Age int `json:'age_size `
}
func StructToJsonDemo
p :=人物
名称: ' jqw ',
Age: 18,
}
jsonBytes,err :=json.Marshal(p (
红外!=聂耳
FMT .打印机(错误) )。
}
fmt.println (字符串(日本字符串) () ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )。
}
功能主()
StructToJsonDemo (
}
输出:
二、json与map的相互旋转
)1)从json迁移到map的示例:
func JsonToMapDemo (
jsonStr :=`
{
'名称' : ' jqw ',
' age': 18
}
`
varmapresultmap [字符串]界面
err :=JSON.Unmarshal ([ ]字节(JSON STR,mapResult ) ) ) ) ) ) ) ) ) ) ) ) )。
红外!=聂耳
FMT.Println (JSontomapdemoerr :err ) )。
}
FMT.Println (制造商) )。
}
输出:
)2)从map向Json的转移示例
func MapToJsonDemo1(
地图实例:=地图字符串界面
instance _ 1:=map [ string ] interface { ' name ' : '约翰',' age': 10}
instance _ 2:=map [ string ] interface { ' name ' : '无情的乌冬面',' age': 12}
贴图实例=应用(贴图实例,实例1,实例2 ) ) ) ) ) ) )。
jsonStr,ERR :=JSON.Marshal (地图实例) ) ) ) )。
红外!=聂耳
FMT.Println (MaptoJSondemoerr :err ) ) )。
}
FMT.Println (字符串) JSONstr ) )
}
输出:
示例2 :
func MapToJsonDemo2(
b,_ :=JSON.Marshal (地图字符串int ('测试' :1,'特里' :2 } ) ) ) ) ) ) ) ) ) ) )。
FMT.Println (字符串(b ) )
}
输出:
三、map与struct的相互旋转
(1)从地图到结构
需要第三方库
在命令行上运行: gogetgithub.com/going go/map结构
示例:
func映射结构演示
map实例:=make (map (字符串界面) ) ) ) ) )。
map实例[ '名称' ]=' jqw '
地图实例[ ' age ' ]=18
太空望远镜
err :=地图结构.解码(地图实例,人物)。
红外!=聂耳
FMT .打印机(错误) )。
}
FMT.Println (人物) )。
}
输出功率
)2)从结构转移到地图的示例
funcstructtomapdemo对象界面地图
obj1:=反射.类型of (obj )
obj2:=反射值(obj )
vardata=make (地图字符串界面)
for i :=0; I obj1.数字字段(; I
data [ obj1.字段(I ) .名称]=obj2.字段(I ) .接口]
}
返回数据
}
func测试结构图
student :=Student{10,' jqw ',18}
data :=结构模型(student )
FMT.Println (数据) )。
}
输出: