알 수 없는 키로 중첩 JSON 역마샬링
문제는 알 수 없는 수의 외부 키와 혼란스럽게 구조화된 중첩 JSON 구조를 구문 분석하는 데 있습니다. 열쇠. 다음 JSON 형식을 고려하십시오.
{ "message": { "Server1.example.com": [], "Server2.example.com": [] }, "response_ms": 659, "success": true }
구조 정의 복잡성
복잡성은 서버 이름 외부에 명확한 키가 없고 서버 이름의 동적 특성으로 인해 발생합니다. 외부 키. 깊게 중첩된 구조체를 사용한 초기 시도:
type ServerDetails struct { Message struct { Hostname struct { Details struct { Application string `json:"application"` } `json:"-"` } `json:"-"` } `json:"message"` }
알 수 없는 서버 이름과 외부 키가 없는 단일 중첩 키로 인해 실패합니다.
동적 키 솔루션
이러한 문제를 극복하기 위해 최상위 구조체 내에서 map[string]ServerStruct를 활용할 수 있습니다. ServerStruct에는 각 서버와 관련된 애플리케이션, 소유자 및 기타 관련 정보가 포함되어 있습니다. 적절한 구문 분석을 보장하기 위해 JSON 태그를 전략적으로 추가할 수 있습니다.
수정된 구조체 정의
type YourStruct struct { Success bool ResponseMS int Servers map[string]*ServerStruct } type ServerStruct struct { Application string Owner string [...] }
JSON 태그 및 역마샬링
추가 JSON 태그는 다음과 같습니다. 필요:
{ "message": { "Server1.example.com": [ { "application": "Apache", "host": { "name": "/^Server-[13456]/" }, "owner": "User1", "project": "Web", "subowner": "User2" } ],
이제 "message" 필드가 map[string][]ServerStruct로 역정렬화됩니다. 맵의 각 키는 서버 이름을 나타내며 해당 값은 ServerStruct의 배열입니다. "-" 태그를 사용하여 언마샬링하는 동안 "host" 필드는 무시됩니다.
이러한 수정을 통해 JSON 데이터를 수정된 구조체로 성공적으로 구문 분석할 수 있습니다.
위 내용은 알 수 없는 키와 동적 서버 이름을 사용하여 중첩된 JSON을 역마샬링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!