如果在Golang中取消编组时,如果在json中找不到字段,是否可能会产生错误?我在文档中找不到它。是否有任何标记指定所需的字段?
encoding/json
程序包中没有将字段设置为“必需”的标签。您要么必须编写自己的MarshalJSON()
方法,要么对缺少的字段进行后期检查。
要检查缺少的字段,您将必须使用指针以区分缺失/空值和零值:
type JsonStruct struct {
String *string
Number *float64
}
完整的工作示例:
package main
import (
"fmt"
"encoding/json"
)
type JsonStruct struct {
String *string
Number *float64
}
var rawJson = []byte(`{
"string":"We do not provide a number"
}`)
func main() {
var s *JsonStruct
err := json.Unmarshal(rawJson, &s)
if err != nil {
panic(err)
}
if s.String == nil {
panic("String is missing or null!")
}
if s.Number == nil {
panic("Number is missing or null!")
}
fmt.Printf("String: %s Number: %f\n", *s.String, *s.Number)
}
操场
问题内容: 我想创建一个结构,其中一个字段可以举行一些特殊类型的,比如说的数据,和。我想将此结构从JSON解码/编码。我们如何在go / golang中实现这一目标? 例如,我具有以下定义的结构: 哪里是 假设我需要将以下JSON解组到上述struct中: 还有这个: 而且这个还: 我该如何实现? 我可以自己定义并继续实现吗? 还是有一种定义自定义类型的方法,例如说并定义为 然后定义并继续? 我也
问题内容: 输出: 我有api调用返回的结果,它就像对象数组(json数组)的复杂格式。我需要通过golang解析该结果,我该如何实现?以下数据是我的结果,它是从api调用获取的。 问题答案: 您仅错过了一点:您需要导出结构的字段: 它将起作用(在Go Playground上尝试): 请注意,JSON文本包含带有小写字母文本的字段名称,但是包足够“聪明”以匹配它们。如果它们完全不同,则可以使用st
JSON“编码/解码”和JSON“编组/解编”之间有什么区别? 试图学习如何在golang中编写RESTFUL api,但不确定JSON“编码”和“编组”之间的区别是什么,或者它们是否相同?
问题内容: 与可选字段相比,应如何处理? 由于所有字段都是可选的,因此我无法根据响应json是否包含某些密钥来真正使我的网络请求失败,只需将其解析为null。 我正在使用的方法 例如,如果我有以下json: 而我的班级: 如果json不包含或不包含密钥,是否有任何选择会失败? 在许多情况下,您可能至少需要解析一些值,而其他值是可选的? 是否有任何模式或库可用于全局处理这种情况? 谢谢。 问题答案:
问题内容: 我从我的android应用程序中的新功能开始,这将有助于填写某些PDF表格。 我发现最好的解决方案是使用iText库。 我可以读取文件,也可以从文档中读取AcroFields,但是是否有可能发现特定字段标记为必填项? 我试图在API文档和Internet上找到此选项,但是没有什么可以帮助解决此问题。 问题答案: 请查看我的书的 13.3.4节,标题为“ AcroForms重新访问”。清
我知道这个问题。 由于其高效的编码、显式模式和广泛的支持,我正在考虑将原型3用于文件格式。然而,模式中非常不方便的一部分是它不允许必填字段。 谷歌有理由删除Protobuf 3中的必填字段。他们遇到的问题是真实的(删除必填字段是一个突破性的改变),但他们的解决方案是胡说八道。 无论如何,我的问题是:Protobuf 3允许您为字段添加自定义选项。是否有人使用该方法(或其他方法)向Protobuf