메시지 유형 "foo"및 "bar"에 대한 structs가있는 다음 예를 고려하십시오. 문자열`json : "a"` b 문자열`json : "b"` } 유형 바 구조 { C 문자열`json : "c"` D String` json : "d"` }
Gorilla의 Conn.readjson 함수를 사용하면 들어오는 JSON 메시지를 특정 스트러크로 사로화 할 수 있습니다. 그러나 비효율적이고 번거로운 다른 유형의 메시지를 처리하기 위해 별도의 conn.readjson (foo) 및 conn.readjson (bar) 호출을 사용해야합니다. 제어 문자열`json : "컨트롤"` x JSON.RAWMESSAGE }컨트롤 필드는 페이로드 유형을 나타내고 X는 원시 JSON 데이터를 보유합니다. 이 접근법을 사용하여 들어오는 메시지를 실조시키기 위해 :
var m 메시지 err : = c.readjson (& m) err! = nil {인 경우 // 오류를 처리합니다 } 스위치 M.Control { 사례 "foo": var foo foo err : = json.unmarshal ([] byte (m.x), & foo); err! = nil { // 오류를 처리합니다 } // foo와 함께 무언가를합니다 사례 "bar": // 처리 막대와 동일한 패턴을 따르십시오 }
type Foo struct { A string `json:"a"` B string `json:"b"` } type Bar struct { C string `json:"c"` D string `json:"d"` }이 솔루션을 사용하면 JSON.RAWMESSAGE의 rawMessage 인터페이스 유형을 사용하여 유형에 관계없이 들어오는 메시지를 사로화 할 수 있습니다. 스위치 명령문은 컨트롤 필드를 확인하여 실제 메시지 유형을 결정하고 그에 따라 사정화됩니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3