>백엔드 개발 >Golang >Go를 사용하여 JSON 문자열에서 중복 속성을 어떻게 감지할 수 있나요?

Go를 사용하여 JSON 문자열에서 중복 속성을 어떻게 감지할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-12-04 07:44:121045검색

How Can I Detect Duplicate Attributes in JSON Strings Using Go?

Go를 사용하여 JSON 문자열에서 중복 속성 감지

Go에서 JSON 문자열 내 중복 속성을 어떻게 식별합니까? JSON 디코딩 및 키 값 분석을 사용하는 솔루션을 살펴보겠습니다.

JSON 문자열 디코딩

json.Decoder를 활용하여 JSON 문자열을 탐색합니다. 객체를 발견하면 중복 항목을 찾기 위해 해당 키와 값을 반복합니다.

중복 확인

검사 기능 내에서 서로 다른 구분 기호를 구별하고 핸들을 처리합니다. 각 경우는 별도로:

  • 객체 ({}): 고유 키를 추적하기 위한 맵을 생성합니다. 중복 키가 발견되면 중복을 기록하거나 오류를 반환하여 순회를 종료할 수 있는 사용자 정의 dup 함수를 호출합니다.
  • 배열([]): 요소를 슬라이스의 항목으로 지정하고 해당 항목 내에서 중복 항목을 반복적으로 확인합니다.

사용법 예

기능을 시연하기 위해 중복 키 경로를 인쇄하는 printDup 함수를 정의하고 샘플 JSON 문자열에 대한 확인을 호출해 보겠습니다.

func printDup(path []string) error {
    fmt.Printf("Duplicate %s\n", strings.Join(path, "/"))
    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

중복 처리 오류

또는 첫 번째 중복 키에서 오류가 발생할 수 있습니다.

var ErrDuplicate = errors.New("duplicate")

func dupErr(path []string) error {
    return ErrDuplicate
}

...

data := `{"a": "b", "a":true,"c":["field_3 string 1","field3 string2"], "d": {"e": 1, "e": 2}}`
err := check(json.NewDecoder(strings.NewReader(data)), nil, dupErr)
if err == ErrDuplicate {
    fmt.Println("found a duplicate")
} else if err != nil {
    // some other error
    log.Fatal(err)
}

위 내용은 Go를 사용하여 JSON 문자열에서 중복 속성을 어떻게 감지할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.