我正在使用一个应用程序 API,它以null不同的方式处理 JSON 中缺失的键和值。{"value":null}它可能会像or一样返回 JSON {}- 如果密钥存在,它们意味着不同的东西。我的问题是我需要将数据解组为 a struct,然后编组回 JSON,保留这种细微差别。
如果我定义一个结构,如:
type Test struct {
Value *string `json:"value,omitempty"`
}
Run Code Online (Sandbox Code Playgroud)
然后{"value":null}将其编组为 JSON 作为{}.
如果我定义一个结构,如:
type Test struct {
Value *string `json:"value"`
}
Run Code Online (Sandbox Code Playgroud)
然后{}将其编组为 JSON 作为{"value":null}.
有没有办法处理从 JSON 读取的 null 和缺失键,并保留缺失键与 null 值之间的差异?
如果您必须区分字段的空值和不存在,您可以使用json.RawMessage:
type Test struct {
Value json.RawMessage `json:"value,omitempty"`
}
Run Code Online (Sandbox Code Playgroud)
您可以测试string(test.Value)=="null"并len(test.Value)==0找出发生了哪种情况。
| 归档时间: |
|
| 查看次数: |
1354 次 |
| 最近记录: |