Go语言学习日记【二十】将json格式字符串转化为key=value格式

package main

import (
	"encoding/json"
	"fmt"
)


func main() {
    // 生成map格式字符串
	ma1 := make(map[string]interface{})
	ma2 := make(map[string]interface{})
	ma3 := make(map[string]interface{})
	ma4 := make(map[string]interface{})
	ma1["a1"] = ma2
	ma1["a2"] = 3
	ma1["a3"] = 4
	ma2["b1"] = 22
	ma2["b2"] = 33
	ma2["b3"] = []int{1,2,3}
	ma2["b4"] = ma3
	ma3["c1"] = 55
	ma3["c3"] = 88
	ma4["d1"] = 66
	ma4["d2"] = 77
	ma3["c2"] = ma4

	// 将map格式字符串转化为json
	mjson,_ :=json.Marshal(ma1)
	fmt.Println(string(mjson))
	fmt.Println("-----------------------------------")
	var k string
	var s string
	map3:= make(map[string]interface{})
	err := json.Unmarshal(mjson, &map3)
	if err != nil {
		fmt.Println(err)
	}
	s = jsonToKV(k,s,map3)
	fmt.Println(s)

}


func jsonToKV(key string,str string ,data interface{}) string  {
	_,ok := data.(map[string]interface{})
	if ok {
		for k,v := range data.(map[string]interface{}) {
			if len(key) > 0 {
				k = key + "." + k
			}
			 _,ok = v.(map[string]interface{})
			 if ok {
				 str =  jsonToKV(k,str,v)
			 } else {
				   if len(str) == 0 {
					   str = str + k + "=" + fmt.Sprintf("%v",v)
				   } else {
					   str = str + " "+ k + "=" + fmt.Sprintf("%v",v)
				   }
			 }
		}
	}
	return str
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值