我想创建一个函数来接收输入字符串,该字符串可以是json格式的字符串,也可以只是一个字符串。例如,以下功能很简单。
func checkJson(input string){ if ... input is in json ... { fmt.Println("it's json!") } else { fmt.Println("it's normal string!") } }
我不清楚您是否仅需要了解“引号字符串”,还是需要了解json或两者之间的区别,因此,这向您展示了如何检测这两种情况,因此您可以非常具体。
我也在这里发布了交互式代码示例:http : //play.golang.org/p/VmT0BVBJZ7
package main import ( "encoding/json" "fmt" ) func isJSONString(s string) bool { var js string return json.Unmarshal([]byte(s), &js) == nil } func isJSON(s string) bool { var js map[string]interface{} return json.Unmarshal([]byte(s), &js) == nil } func main() { var tests = []string{ `"Platypus"`, `Platypus`, `{"id":"1"}`, } for _, t := range tests { fmt.Printf("isJSONString(%s) = %v\n", t, isJSONString(t)) fmt.Printf("isJSON(%s) = %v\n\n", t, isJSON(t)) } }
将输出以下内容:
isJSONString("Platypus") = true isJSON("Platypus") = false isJSONString(Platypus) = false isJSON(Platypus) = false isJSONString({"id":"1"}) = false isJSON({"id":"1"}) = true