Golang does not support case sensitive unmarshalling of JSON使用标准软件包。不过,这似乎是非常普遍的需求。
在编组和解组JSON时是否有任何方法可以精确匹配大小写?
示例:我不想将“ id”与“ ID”匹配。
答案 0 :(得分:2)
如果您的数据结构定义了这种方式的成员并适当地包含标签,那么标准库encoding / json实际上确实支持区分大小写的编码/解码。
例如:
package main
import (
"encoding/json"
"fmt"
)
type image struct {
Url string `json:"url"`
}
type images struct {
Image1 image `json:"image"`
Image2 image `json:"Image"`
}
func main() {
i := images{Image1: image{Url: "test.jpg"}, Image2: image{Url: "test2.jpg"}}
data, err := json.Marshal(i)
if err != nil {
fmt.Printf("error: %s", err)
}
fmt.Println(string(data))
var i2 images
err = json.Unmarshal(data, &i2)
if err != nil {
fmt.Printf("error: %s", err)
}
fmt.Printf("%#v\n", i2)
}
https://play.golang.org/p/GWUWYUc-T9t
哪个会输出:
{"image":{"url":"test.jpg"},"Image":{"url":"test2.jpg"}}
main.images{Image1:main.image{Url:"test.jpg"}, Image2:main.image{Url:"test2.jpg"}}
但是,另一个不错的json编码包是jsonparser:https://github.com/buger/jsonparser
我不知道它是否与标准库程序包不同地支持区分大小写。