Go 处理 Json 有比较优雅的方式吗?结构体好麻烦 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
szxczyc

Go 处理 Json 有比较优雅的方式吗?结构体好麻烦

  •  
  •   szxczyc 2021 年 11 月 17 日 2040 次点击
    这是一个创建于 1620 天前的主题,其中的信息可能已经有所发展或是发生改变。

    通过请求体:{"tags":["baidu"],"item_id":8}得到了一个 json 的返回值:

    { "data": { "baidu": { "sdus": [ { "sdu_name": "hello-redis-live", "service_id": 12, "owners": [ "[email protected]" ], "sdu_id": 17, "service": "tech.cto.redis" }, { "sdu_name": "good-worker-live", "service_id": 10, "owners": [ "[email protected]" ], "sdu_id": 159, "service": "tech.cto.retoc.worker" } ] } }, "error": 0 } 

    其中,tags 的值baidu的请求,导致每次返回的 Json 里baidu会随之改变。

    我用 go 该怎么样才能只取"sdu_name""service"呢?

    json.unmarshall 没办法处理~

    我尝试构造了几次结构体,但是只要 tags:baidu一变化,请求体就没办法处理了~

    type Service struct { Data Data `json:"data"` Error int64 `json:"error"` } type Data struct { Baidu Baidu `json:"baidu"` } type Baidu struct { Sdus []Sdus `json:"sdus"` } type Sdus struct { SduName string `json:"sdu_name"` ServiceID int64 `json:"service_id"` Owners []string `json:"owners"` SduID int64 `json:"sdu_id"` Service string `json:"service"` } 
    8 条回复    2021-11-17 14:22:48 +08:00
    Buges
        1
    Buges  
       2021 年 11 月 17 日 via Android   1
    你是说返回的 data.baidu 字段名是动态的,其他结构不变?
    那把 Data 改成 map[string]Baidu
    szxczyc
        2
    szxczyc  
    OP
       2021 年 11 月 17 日
    @Buges 我只能说一声牛逼~可以了卧槽~
    szxczyc
        3
    szxczyc  
    OP
       2021 年 11 月 17 日
    @Buges 感谢大佬。我已经拿到了这样的结构。
    ```json
    {
    "data":{
    "baidu":{
    "sdus":[
    {
    "sdu_name":"hello-redis-live",
    "service":"tech.cto.redis"
    },
    {
    "sdu_name":"good-worker-live",
    "service":"tech.cto.retoc.worker"
    }
    ]
    }
    }
    }
    ```
    另外想问一下,如果我想只拿出里面这样的结构,是可以做的吗?
    ```json
    {
    "sdus":[
    {
    "sdu_name":"hello-redis-live",
    "service":"tech.cto.redis"
    },
    {
    "sdu_name":"good-worker-live",
    "service":"tech.cto.retoc.worker"
    }
    ]
    }
    ```
    iyear
        4
    iyear  
       2021 年 11 月 17 日 via Android
    @szxczyc 然后遍历 map 不就拿到了吗
    rammiah
        5
    rammiah  
       2021 年 11 月 17 日 via Android   1
    考虑下 gjson 或者 sonic ,自带 json 库功能比较弱
    TypeError
        6
    TypeError  
       2021 年 11 月 17 日
    goland 自带支持复制粘贴 json 后转换成结构体
    jazzychai
        7
    jazzychai  
       2021 年 11 月 17 日
    szxczyc
        8
    szxczyc  
    OP
       2021 年 11 月 17 日 via iPhone
    不知道 gjson 的[] result 结构怎么转换
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3003 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 09:18 PVG 17:18 LAX 02:18 JFK 05:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86