문자열을 확인하는 방법은 json 형식입니다.
json 형식의 문자열이나 문자열만으로 입력되는 문자열을 받는 함수를 만들고 싶습니다.예를 들어, 다음과 같은 쉬운 기능.
func checkJson(input string){
if ... input is in json ... {
fmt.Println("it's json!")
} else {
fmt.Println("it's normal string!")
}
}
스키마에 관계없이 JSON 문자열을 검증하는 방법을 찾는 다른 사용자는 다음을 시도해 보십시오.
func IsJSON(str string) bool {
var js json.RawMessage
return json.Unmarshal([]byte(str), &js) == nil
}
따옴표로 묶인 문자열에 대해서만 알 필요가 있는지, 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
표준.encoding/json
라이브러리에 json이 포함되어 있습니다.유효한 기능은 go 1.9부터 시작됩니다.https://github.com/golang/go/issues/18086 를 참조해 주세요.이 함수는 제공된 문자열이 유효한 json인지 확인하기 위해 사용할 수 있습니다.
if json.Valid(input) {
// input contains valid json
}
그렇지만json.Valid
fastjson 등의 서드파티 솔루션에 비해 상당히 느릴 수 있습니다.표준보다 최대 5배 빠른 검증json.Valid
- 참조json validation
참조할 수 있습니다.
예를들면,
package main
import (
"encoding/json"
"fmt"
)
func isJSONString(s string) bool {
var js string
err := json.Unmarshal([]byte(s), &js)
return err == nil
}
func main() {
fmt.Println(isJSONString(`"Platypus"`))
fmt.Println(isJSONString(`Platypus`))
}
출력:
true
false
이것은 표준 라이브러리의 실제 기능에 대한 오래된 게시물일 수 있습니다.
그냥 json으로 하면 돼."encoding/json" 패키지의 Valid() 함수.
var tests = []string{
`"Platypus"`,
`Platypus`,
`{"id":"1"}`,
`{"id":"1}`,
}
for _, t := range tests {
fmt.Printf("is valid: (%s) = %v\n", t, json.Valid([]byte(t)))
}
예: https://play.golang.org/p/nfvOzQB919s
이 질문에 대한 답을 찾다가 https://github.com/asaskevich/govalidator,을 찾았습니다.이 블로그 포스트에는 입력 검증기(https://husobee.github.io/golang/validation/2016/01/08/input-validation.html)의 작성에 대한 설명이 기재되어 있습니다.혹시나 퀵라이브러리를 찾고 있는 사람이 있을지도 모르기 때문에, 그 툴을 찾기 쉬운 장소에 두는 것이 편리하다고 생각했습니다.
이 패키지는 isJ와 동일한 방법을 사용합니다.William King이 제안하는 SON은 다음과 같습니다.
// IsJSON check if the string is valid JSON (note: uses json.Unmarshal).
func IsJSON(str string) bool {
var js json.RawMessage
return json.Unmarshal([]byte(str), &js) == nil
}
이 패키지는 JSON in Go에 대한 더 큰 통찰력을 주었기 때문에 여기에 두면 도움이 될 것 같습니다.
현재 승인된 답변(2017년 7월 현재)은 JSON 어레이에 대해 실패하여 업데이트되지 않았습니다.https://repl.it/J8H0/10
이것을 시험해 보세요.
func isJSON(s string) bool {
var js interface{}
return json.Unmarshal([]byte(s), &js) == nil
}
아니면 윌리엄 킹의 해결책일 수도 있고, 더 나은 방법일 수도 있죠.
이런 걸 써보는 건 어떨까요?
if err := json.Unmarshal(input, temp_object); err != nil {
fmt.Println("it's normal string!")
} else {
fmt.Println("it's json!")
}
언급URL : https://stackoverflow.com/questions/22128282/how-to-check-string-is-in-json-format
'programing' 카테고리의 다른 글
wp_press를 사용한 워드프레스 페이지 리다이렉트 (0) | 2023.02.11 |
---|---|
get_header()가 테마의 서브폴더에 있는 커스텀헤더 파일을 호출하려면 어떻게 해야 합니까? (0) | 2023.02.11 |
WordPress 테마에서 wp_enqueue_style()을 사용하는 방법 (0) | 2023.02.11 |
Angular 필터를 사용하여 데이터를 그룹화하려면 어떻게 해야 합니까? (0) | 2023.02.11 |
WordPress 갤러리 html 레이아웃 맞춤 (0) | 2023.02.11 |