소비된 엔드포인트가 다양한 형식으로 JSON을 반환하는 시나리오에서는 이러한 변형을 처리하기 위한 우아한 접근 방식을 찾는 것이 중요합니다. . 엔드포인트의 불변성으로 인해 딜레마가 발생합니다.
일반적인 전략에는 디코딩을 위해 여러 구조체를 사용하고, 문자열을 예상하는 구조체로 디코딩을 시도하고, 오류가 발생하면 배열이 있는 대체 구조체로 전환하는 것이 포함됩니다. 이 방법으로 원하는 기능을 달성할 수 있지만 더 세련된 접근 방식이 있을 수 있습니다.
권장되는 해결 방법은 JSON을 인터페이스 값으로 역마샬링하는 것입니다.{} 그런 다음 유형 어설션 또는 유형 스위치를 사용하여 이 값을 검사하여 실제 유형을 결정할 수 있습니다.
Go의 예는 이 접근 방식의 효율성을 보여줍니다.
<code class="go">type Response struct { Message interface{} `json:"message"` } func main() { inputs := []string{ `{"message":"Message"}`, `{"message":["ERROR_CODE"]}`, } for _, input := range inputs { var r Response if err := json.Unmarshal([]byte(input), &r); err != nil { panic(err) } switch x := r.Message.(type) { case string: fmt.Println("Success, message:", x) case []interface{}: fmt.Println("Error, code:", x) default: fmt.Println("Something else:", x) } } }</code>
출력은 성공적인 처리를 보여줍니다. JSON 응답 형식의 구별:
Success, message: Message Error, code: [ERROR_CODE]
이 접근 방식을 활용하면 다양한 JSON 형식을 쉽게 처리할 수 있으므로 여러 구조체나 오류 처리가 필요하지 않습니다.
위 내용은 다양한 형식의 JSON 응답을 우아하게 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!