
通过请求体:{"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"` } 1 Buges 2021 年 11 月 17 日 via Android 你是说返回的 data.baidu 字段名是动态的,其他结构不变? 那把 Data 改成 map[string]Baidu |
3 szxczyc OP @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" } ] } ``` |
5 rammiah 2021 年 11 月 17 日 via Android 考虑下 gjson 或者 sonic ,自带 json 库功能比较弱 |
6 TypeError 2021 年 11 月 17 日 goland 自带支持复制粘贴 json 后转换成结构体 |
7 jazzychai 2021 年 11 月 17 日 |
8 szxczyc OP 不知道 gjson 的[] result 结构怎么转换 |