【发布时间】:2018-02-13 11:26:46
【问题描述】:
我正在尝试检查 Json 字符串是否与 Avro 模式匹配。我不关心数据的序列化,只是得到isValidJson=true/false 的布尔结果。
我会使用每个 golang 库。
我试图用这个 goavro lib 写一些东西,但它对我不起作用,可能是因为我是 golang 的新手。
所需的伪代码:
func main() {
avroSchema :=
`{"type":"record","name":"raw","namespace":"events","fields":[{"name":"my_int","type":["null","int"],"default":null},{"name":"my_string","type":["null","string"],"default":"null"},{"name":"my_string2","type":null}]}`
jsonString := `{"my_int": 3, "my_string": "foo", "my_string2": null}`
ok ;= isValidJson(jsonString, avroSchema)
}
知道如何实现isValidJson(..) 方法吗?
【问题讨论】:
-
什么不起作用?除了这甚至没有编译的事实之外?
-
@marc 是的,我知道,我是 golang 的新手。我正在尝试根据提供的架构验证 Json 字符串是否有效。知道如何做到这一点或与 go 一起使用哪个库以及如何使用?通过 Java 和 Python 很容易,但我找不到在 golang 中进行此验证的方法。我将修复方法来表示我想要实现的伪代码。
-
[docs]((godoc.org/github.com/linkedin/goavro) 中没有关于验证的内容,它要么解析要么不解析。使用 codec.NativeFromTextual 解析 json 字符串。
-
@marc 我尝试了该方法但无法使用它。如果 jsonString 在失败时解析或返回错误,那就太好了。这意味着
err == nil是一个成功的解析。根据我的输入,它对你有用吗? -
你的架构是无效的 json,所以你甚至不能构建一个编解码器。