구조를 알 수 없는 JSON 처리: 역마샬링 및 수정
많은 프로그래밍 시나리오에서 구조를 알 수 없는 JSON 데이터를 처리하는 것은 어려울 수 있습니다. 그러나 Go는 이러한 장애물을 극복할 수 있는 솔루션을 제공합니다.
다음과 같은 JSON 문자열을 받는 상황을 생각해 보세요.
{ "votes": { "option_A": "3" } }
목표는 다음과 같은 새로운 "count" 키를 추가하는 것입니다. JSON 개체에 "1" 값을 추가합니다. 그러나 JSON 구조는 예측할 수 없기 때문에 미리 정의된 구조체와 함께 표준 json.Unmarshal 함수를 사용할 수 없습니다.
이 문제를 해결하려면 map[string]interface{} 유형을 활용할 수 있습니다. 이를 통해 JSON을 일반 맵으로 역마샬링할 수 있습니다. 여기서 키는 문자열이고 값은 모든 유형의 데이터를 나타낼 수 있는 인터페이스입니다.
코드는 이를 달성하는 방법을 보여줍니다.
package main import ( "encoding/json" "fmt" ) func main() { in := []byte(`{ "votes": { "option_A": "3" } }`) var raw map[string]interface{} if err := json.Unmarshal(in, &raw); err != nil { panic(err) } raw["count"] = 1 out, err := json.Marshal(raw) if err != nil { panic(err) } fmt.Println(string(out)) }
이 코드에서는 JSON 데이터를 원시 맵으로 역마샬링합니다. 구조를 알 수 없으므로 값은 인터페이스로 표시됩니다.
그런 다음 키가 "count"이고 값이 1인 새 키-값 쌍을 추가하여 맵을 수정할 수 있습니다. 마지막으로 json.Marshal을 사용하여 수정된 지도를 다시 JSON 문자열로 마샬링합니다.
출력은 예상대로입니다.
{"votes":{"option_A":"3"},"count":1}
이 기술은 JSON 데이터를 처리하는 유연한 방법을 제공합니다. 알 수 없는 구조를 사용하여 필요에 따라 데이터를 수정하고 강화할 수 있습니다.
위 내용은 Go에서 구조를 알 수 없는 JSON 객체를 어떻게 수정할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!