arrays - 使用解码到通用接口(interface)时如何验证 JSON?

标签 arrays json go

我想验证字节数组数据是否包含有效的 JSON,使用 unmarsall 方法进入接口(interface)。

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字符串,但它是基于接口(interface)'map[string]interface{}'进行验证的

{
    "a": "b"
}

[{
    "a": "b"
}, {
    "a": "b"
}]

我想验证 JSON 文本。 JSON 文本是序列化的对象或数组。因此,当我在 playground 中添加测试用例时,寻找支持 JSON 文本所有有效用例的解决方案。 .

如何使这个接口(interface)即 var map[string]interface{} 通用,以便它支持有效 JSON 字符串的两个测试用例?

Solved: Playground Link

最佳答案

不要使用 map[string]interface{},只需使用 interface{}。第二个例子是[]interface{}类型,还有更多类型的有效json。

这是您的工作代码。我又添加了几例有效的 json。

playground

这里的代码如果你只想允许 map 和 slice :

playground

关于arrays - 使用解码到通用接口(interface)时如何验证 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49340734/

相关文章:

java - 如何根据数组的内容顺序有效地修改数组的内容?

java - JSON-简单 ClassCastException 从 String 到 JSONObject

go build 错误 .go/src for go/src 在寻找依赖

go - 如何将 zap 记录器与 go-kit 一起使用?

c++ - 字符串连接期间可能的缓冲区溢出

java - Jasper 报告从 byte[] 插入图像

c - 数组不会使用指针在 C 中反向打印

android - 在 android 中进行 Json 调用

javascript - Angular 4获取嵌套json

go - 如何通过读取设置文件在 Golang 中动态创建结构?