go 编码/json:在将空值解码为带有",string"标签的字段时存在多个问题,

r1zk6ea1  于 2个月前  发布在  Go
关注(0)|答案(2)|浏览(39)

我已经在使用megacheck工具,发现在encoding/json的测试中输入NullTestStrings是未使用的。它似乎旨在检查将空值解码为",string"字段的过程,但没有测试,这是第一个问题。第二个问题是,如果你创建一个,它会失败:https://play.golang.org/p/5XjdhoDDkq

在我看来,将null解码为简单字段和将"null"解码为",string"字段之间存在一些不一致之处。

形式:

$ go version
go version devel +ca360c3 Sat Oct 7 22:12:36 2017 +0000 linux/amd64
$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/ainar/go"
GORACE=""
GOROOT="/home/ainar/go/gotip"
GOTOOLDIR="/home/ainar/go/gotip/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build220310604=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
rxztt3cl

rxztt3cl1#

感谢这个 -似乎我们应该要么移除那个结构体,要么为当前的行为添加测试?

jpfvwuh4

jpfvwuh42#

我可以发送一个CL,添加测试或删除结构,但我认为null具有简单字段和"null"具有",string"字段的行为不同是相当令人担忧的。我认为行为应该是相同的。这迟早会咬到某人。如果你担心它会破坏某人的代码,我认为这是有风险的:
Bugs。如果编译器或库有一个违反规范的错误,依赖于错误行为的程序可能会在修复错误时中断。我们保留修复此类错误的权利。

相关问题