栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

遍历JSON键和值,并同时替换golang中的指定匹配值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

遍历JSON键和值,并同时替换golang中的指定匹配值

最后!我完成了我所寻找的全部规格!!

https://play.golang.org/p/eN4-FjaQS97

   package mainimport (    "encoding/json"    "fmt")func main() {    b := []byte(`        {        "iw":{"Ie":{"Itye":{"e":"eIe"}}},"InnerJSON2":"Nonevalue",    "outterJSON":{        "innerJSON1":{ "value1":10, "value2":22 , "InnerInnerArray": [ "test1" , "test2"], "InnerInnerJSONArray": [ {"fld1" : "val1"} , {"fld2" : "val2"} ] }, "InnerJSON2":"Nonevalue"        }    }    `)    f := map[string]interface{}{}    if err := json.Unmarshal(b, &f); err != nil {        panic(err)    }    verifyJSON(f)    data, _ := json.MarshalIndent(f, "", "  ")    fmt.Println(string(data))}func verifyJSON(bv interface{}) {    var dumpJSON func(v interface{}, kn string)    dumpJSON = func(v interface{}, kn string) {        iterMap := func(x map[string]interface{}, root string) { var knf string if root == "root" {     knf = "%v/%v" } else {     knf = "%v/%v" } for k, v := range x {     switch vv := v.(type) {     case map[string]interface{}:         fmt.Printf("%s => (map[string]interface{}) ...n", fmt.Sprintf(knf, root, k))     case []interface{}:         fmt.Printf("%s => ([]interface{}) ...n", fmt.Sprintf(knf, root, k))     default:         fmt.Printf("%s => %vn", fmt.Sprintf(knf, root, k), vv)         x[k] = "rgk"     }     dumpJSON(v, fmt.Sprintf(knf, root, k)) }        }        iterSlice := func(x []interface{}, root string) { var knf string if root == "root" {     knf = "%v/%v" } else {     knf = "%v/%v" } for k, v := range x {     switch vv := v.(type) {     case map[string]interface{}:         fmt.Printf("%s => (map[string]interface{}) ...n", fmt.Sprintf(knf, root, k))     case []interface{}:         fmt.Printf("%s => ([]interface{}) ...n", fmt.Sprintf(knf, root, k))     default:         fmt.Printf("%s => %vn", fmt.Sprintf(knf, root, k), vv)         x[k] = "rg"     }     dumpJSON(v, fmt.Sprintf(knf, root, k)) }        }        switch vv := v.(type) {        case map[string]interface{}: iterMap(vv, kn)        case []interface{}: iterSlice(vv, kn)        default:        }    }    dumpJSON(bv, "root")}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394624.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号