杰克工作室 发表于 2023-2-28 20:58

golang 开发 Struct 转换成 map 两种方式

<h1>一、通过struct转json,json转成map</h1>

<pre>
func&nbsp;StructToMapViaJson()&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;m&nbsp;:=&nbsp;make(mapinterface{})
&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;:=&nbsp;time.Now()
&nbsp;&nbsp;&nbsp;&nbsp;person&nbsp;:=&nbsp;Persion{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Id:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;98439,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;zhaondifnei&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Address:&nbsp;&nbsp;&quot;大沙地&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Email:&nbsp;&nbsp;&nbsp;&nbsp;&quot;dashdisnin@126.com&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;School:&nbsp;&nbsp;&nbsp;&quot;广州第十五中学&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;City:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;zhongguoguanzhou&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Company:&nbsp;&nbsp;&quot;sndifneinsifnienisn&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Age:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;23,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sex:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;F&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Proviece:&nbsp;&quot;jianxi&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Com:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;广州兰博基尼&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PostTo:&nbsp;&nbsp;&nbsp;&quot;蓝鲸XXXXXXXX&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Buys:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;shensinfienisnfieni&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hos:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;zhonsndifneisnidnfie&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;j,&nbsp;_&nbsp;:=&nbsp;json.Marshal(person)
&nbsp;&nbsp;&nbsp;&nbsp;json.Unmarshal(j,&nbsp;&amp;m)
&nbsp;&nbsp;&nbsp;&nbsp;fmt.Println(m)
&nbsp;&nbsp;&nbsp;&nbsp;fmt.Printf(&quot;duration:%d&quot;,&nbsp;time.Now().Sub(t))
}</pre>

<h1>二、通过反射形式生成map</h1>

<pre>
func&nbsp;StructToMapViaReflect()&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;m&nbsp;:=&nbsp;make(mapinterface{})
&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;:=&nbsp;time.Now()
&nbsp;&nbsp;&nbsp;&nbsp;person&nbsp;:=&nbsp;Persion{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Id:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;98439,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;zhaondifnei&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Address:&nbsp;&nbsp;&quot;大沙地&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Email:&nbsp;&nbsp;&nbsp;&nbsp;&quot;dashdisnin@126.com&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;School:&nbsp;&nbsp;&nbsp;&quot;广州第十五中学&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;City:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;zhongguoguanzhou&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Company:&nbsp;&nbsp;&quot;sndifneinsifnienisn&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Age:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;23,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sex:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;F&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Proviece:&nbsp;&quot;jianxi&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Com:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;广州兰博基尼&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PostTo:&nbsp;&nbsp;&nbsp;&quot;蓝鲸XXXXXXXX&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Buys:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;shensinfienisnfieni&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hos:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;zhonsndifneisnidnfie&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;elem&nbsp;:=&nbsp;reflect.ValueOf(&amp;person).Elem()
&nbsp;&nbsp;&nbsp;&nbsp;relType&nbsp;:=&nbsp;elem.Type()
&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i&nbsp;:=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;relType.NumField();&nbsp;i++&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m&nbsp;=&nbsp;elem.Field(i).Interface()
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;fmt.Println(m)
&nbsp;&nbsp;&nbsp;&nbsp;fmt.Printf(&quot;duration:%d&quot;,&nbsp;time.Now().Sub(t))
}</pre>
页: [1]
查看完整版本: golang 开发 Struct 转换成 map 两种方式