문제:
웹소켓 데이터를 JSON 형식으로 구문 분석할 때 사용자에게 오류가 발생할 수 있습니다. JSON 구문을 위반하는 중첩된 인코딩 JSON 문자열로 인해 발생합니다. 예를 들어, "텍스트" 필드의 문자열 값에는 "" 및 "<"와 같은 HTML 엔터티가 포함되어 디코더가 실패할 수 있습니다.
해결책:
JSON에서 중첩된 인코딩 문자열을 처리하려면 애플리케이션이 데이터를 두 부분으로 디코딩해야 합니다. 단계:
다음은 이 접근 방식을 보여주는 예제 코드 조각입니다.
type main struct { Name string `json:"name"` Args []string `json:"args"` } type arg struct { Method string `json:"method"` Params par `json:"params"` } type par struct { Channel string `json:"channel,omitempty"` Name string `json:"name,omitempty"` NameColor string `json:"nameColor,omitempty"` Text string `json:"text,omitempty"` Time int64 `json:"time,omitempty"` } // Input JSON string str := `{"name":"message","args":["{\"method\":\"chatMsg\",\"params\":{\"channel\":\"channel\",\"name\":\"name\",\"nameColor\":\"B5B11E\",\"text\":\"https://play.spotify.com/browse\",\"time\":1455397119}}"]}` var m main if err := json.Unmarshal([]byte(str), &m); err != nil { log.Fatal(err) } var args arg if err := json.Unmarshal([]byte(m.Args[0]), &args); err != nil { log.Fatal(err) }이 예제에서 첫 번째 패스는 외부 JSON 문자열을 기본 구조체로 디코딩하여 수행됩니다. "name" 및 "args" 필드가 포함되어 있습니다. 그런 다음 "args" 필드는 두 번째 단계에서 별도의 JSON 문자열로 구문 분석되어 HTML 엔터티를 제거하고 유효한 arg 개체로 복원합니다. 이 접근 방식을 사용하면 모든 JSON 데이터가 올바르게 처리되고 오류가 방지됩니다.
위 내용은 JSON Websocket 데이터에서 중첩된 인코딩 문자열을 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!