> 백엔드 개발 > Golang > Go가 부분 JSON 디코딩 및 업데이트를 어떻게 효율적으로 처리할 수 있나요?

Go가 부분 JSON 디코딩 및 업데이트를 어떻게 효율적으로 처리할 수 있나요?

Susan Sarandon
풀어 주다: 2024-12-27 09:06:14
원래의
502명이 탐색했습니다.

How Can Go Handle Partial JSON Decoding and Updates Efficiently?

Go에서 부분 JSON 디코딩 및 업데이트 처리

JSON 개체의 구조가 동적인 경우 기존 JSON 역마샬링으로 인해 다음이 발생할 수 있습니다. 필드 잘림으로 인한 데이터 손실. 이 문제를 해결하려면 알 수 없는 정보를 보존하면서 선택적 업데이트를 허용하는 json.RawMessage와 일반 구조체를 결합하는 솔루션을 고려해보세요.

Color 구조체는 이 접근 방식을 보여줍니다.

type Color struct {
    Space string
    raw   map[string]json.RawMessage
}
로그인 후 복사

JSON 중 언마샬링하는 경우 UnmarshalJSON 메서드는 전체 데이터를 원시로 읽고, 원시에서 원하는 필드(예: Space)를 검색합니다. 존재합니다:

func (c *Color) UnmarshalJSON(bytes []byte) error {
    if err := json.Unmarshal(bytes, &c.raw); err != nil {
        return err
    }
    // ...
    return nil
}
로그인 후 복사

JSON 마샬링의 경우 MarshalJSON 메서드는 원하는 필드를 다시 원시에 넣어 업데이트된 필드가 출력에 포함되도록 합니다.

func (c *Color) MarshalJSON() ([]byte, error) {
    // ...
    return json.Marshal(c.raw)
}
로그인 후 복사

이 접근 방식은 다음을 허용합니다. 알 수 없거나 동적 구조를 포함한 나머지 JSON 데이터를 보존하면서 선택적 필드를 업데이트합니다.

위 내용은 Go가 부분 JSON 디코딩 및 업데이트를 어떻게 효율적으로 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿