임의 JSON 데이터 정렬 해제
질문:
JSON 데이터를 어떤 방식으로든 정렬할 수 있나요? 부분이나 섹션에서 비정렬화할 수 있습니까? 이 시나리오에서 데이터의 위쪽 절반은 아래쪽 절반의 데이터 유형을 나타내는 "코드"를 정의하며, 이는 구조체마다 다를 수 있습니다. Go에서 이를 어떻게 달성할 수 있나요?
답변:
하위 절반이 구조체마다 다를 수 있는 임의 JSON 데이터를 비정렬화하려면 다음이 될 때까지 하위 절반 구문 분석을 지연하면 됩니다. 위쪽 절반의 "코드"가 알려져 있습니다.
구현:
예제 코드:
<code class="go">package main import ( "encoding/json" "fmt" ) type Message struct { Code int Payload json.RawMessage } type Range struct { Start int End int } type User struct { ID int Pass int } func MyUnmarshall(m []byte) { var message Message var payload interface{} json.Unmarshal(m, &message) switch message.Code { case 3: payload = new(User) case 4: payload = new(Range) } json.Unmarshal(message.Payload, payload) fmt.Printf("\n%v%+v", message.Code, payload) } func main() { json := []byte(`{"Code": 4, "Payload": {"Start": 1, "End": 10}}`) MyUnmarshall(json) json = []byte(`{"Code": 3, "Payload": {"ID": 1, "Pass": 1234}}`) MyUnmarshall(json) }</code>
위 내용은 \"코드\"를 기반으로 다양한 구조를 사용하여 임의 JSON 데이터를 비정렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!