我想验证字节数组数据是否包含使用unmarsall方法进入接口的有效JSON。
package main
import (
"encoding/json"
"fmt"
)
func isJSON(s string) bool {
var js map[string]interface{}
return json.Unmarshal([]byte(s), &js) == nil
}
func main() {
var tests = []string{
`{"a":"b"}`,
`[{"a":"b"},{"a":"b"}]`,
}
for _, t := range tests {
fmt.Printf("isJSON(%s) = %v\n\n", t, isJSON(t))
}
}
两个输入测试参数都是有效的JSON字符串,但它会根据界面' map [string] interface {}'
进行验证{
"a": "b"
}
[{
"a": "b"
}, {
"a": "b"
}]
我想验证JSON文本。 JSON文本是序列化对象或数组。因此,当我在playground中添加测试用例时,寻找支持JSON文本的所有有效案例的解决方案。
如何创建此接口,即var map[string]interface{}
泛型,以便它支持两个有效JSON字符串的测试用例?
答案 0 :(得分:3)
不要使用map[string]interface{}
,而只是使用interface{}
。第二个示例是[]interface{}
类型,有更多类型的有效json。
这是您的工作代码。我添加了一些有效的json案例。
如果您只想允许地图和切片,请输入代码: