最近写代码请求一个 api ,返回的 json 如下:
{
"publisher": "中国人民大学出版社",
"holdings": "[{\"callNo\":\"F820/49=7\",\"shelfMark\":null,\"itemsCount\":1}]"
}
我想对holdings
进行 unmarshal ,但尝试了一下直接调用函数,出现报错。
我个人目前的想法是取出holdings
,使用strconv.Unquote
转义后再 unmarshal ,但感觉比较复杂,请问各位有什么好的办法?
1
AjiuJiang 2022-06-29 17:32:58 +08:00 1
经常用到一个 json 库 github.com/json-iterator/go
|
2
dzdh 2022-06-29 17:35:49 +08:00 1
先整个 unmarshal 后取出 string 再 unmarshal
|
3
KasonPasser 2022-06-29 17:36:01 +08:00
让写接口的返回一个数组
|
4
reter 2022-06-29 17:41:50 +08:00 1
|
5
sun522198558 2022-06-29 18:05:35 +08:00 1
暴力替换
type S struct { Publisher string `json:"publisher"` Holdings []struct { CallNo string `json:"callNo"` ShelfMark interface{} `json:"shelfMark"` ItemsCount int `json:"itemsCount"` } `json:"holdings"` } var s S _ = json.Unmarshal([]byte(strings.Replace(strings.Replace(strings.Replace(`{ "publisher": "中国人民大学出版社", "holdings": "[{\"callNo\":\"F820/49=7\",\"shelfMark\":null,\"itemsCount\":1}]" }`, "\\\"", "\"", -1), "\"[", "[", -1), "]\"", "]", -1)), &s) fmt.Println(s) |