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 중국어 웹사이트의 기타 관련 기사를 참조하세요!