Golang을 사용하여 JSON 문자열에서 중복 속성 감지
JSON 문자열에서는 중복 속성을 방지하여 데이터 무결성을 유지하는 것이 중요합니다. Golang은 이러한 중복 항목을 감지하고 처리하는 편리한 방법을 제공합니다.
해결책:
JSON 문자열에서 중복 속성을 감지하려면 json.Decoder를 활용하여 탐색할 수 있습니다. JSON 구조. 디코딩하는 동안 객체와 해당 키를 검사하여 중복 여부를 확인합니다.
제공된 Golang 코드는 이 프로세스를 보여줍니다.
func check(d *json.Decoder, path []string, dup func(path []string) error) error { // Handle token and delimeters t, err := d.Token() if err != nil { return err } delim, ok := t.(json.Delim) // Skip scaler types if !ok { return nil } switch delim { case '{': // Initialize map for keys and avoid duplicates keys := make(map[string]bool) for d.More() { key := t.(string) if keys[key] { return dup(append(path, key)) } keys[key] = true if err := check(d, append(path, key), dup); err != nil { return err } } case '[': i := 0 for d.More() { if err := check(d, append(path, strconv.Itoa(i)), dup); err != nil { return err } i++ } } return nil }
사용 예:
data := `{"a": "b", "a":true,"c":["field_3 string 1","field3 string2"], "d": {"e": 1, "e": 2}}` if err := check(json.NewDecoder(strings.NewReader(data)), nil, printDup); err != nil { log.Fatal(err) }
이 예에서는 다음을 보고합니다. 중복:
Duplicate a Duplicate d/e
사용자 정의 오류 처리:
첫 번째 중복 키 발견 시 오류를 발생시키려면 dupErr() 함수를 다음과 같이 수정하세요.
func dupErr(path []string) error { return ErrDuplicate }
이 접근 방식을 사용하면 중복 속성을 감지하여 문제를 기록하거나 문제를 필터링하는 등의 적절한 조치를 취할 수 있습니다. 데이터가 중복되었습니다.
위 내용은 Golang을 사용하여 JSON 문자열에서 중복 속성을 감지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!