알 수 없는 키가 포함된 중첩 JSON의 수수께끼 풀기
알 수 없는 키가 포함된 복잡한 JSON 데이터를 역마샬링하는 것은 어려운 작업일 수 있습니다. 제공된 복잡한 JSON 구조를 고려해보세요.
{ "message": { "Server1.example.com": [ { "application": "Apache", "host": { "name": "/^Server-[13456]/" }, "owner": "User1", "project": "Web", "subowner": "User2" } ], "Server2.example.com": [ { "application": "Mysql", "host": { "name": "/^Server[23456]/" }, "owner": "User2", "project": "DB", "subowner": "User3" } ] }, "response_ms": 659, "success": true }
구조가 혼란스럽기는 하지만 단계별로 분석할 수 있습니다. 처음에는 "Server1.example.com" 및 "Server2.example.com"과 같이 동적으로 변하는 알 수 없는 서버 이름이 있음을 확인합니다. 또한 "호스트" 필드에는 둘러싸는 키가 없는 암호화된 정규 표현식이 포함되어 있습니다.
이 문제를 해결하려면 제공된 구조체로 초점을 옮겨 보겠습니다.
type ServerDetails struct { Message struct{ Hostname struct{ Details struct{ Application string `json:"application"` }`json:"-"` }`json:"-"` }`json:"message"` }
이 구조체는 다음과 같이 설계되었습니다. "메시지" 개체 내의 알려진 필드를 처리하려고 시도했지만 다양한 서버 이름과 고유한 "호스트"를 캡처하지 못했습니다. 필드.
핵심 통찰력은 보다 유연한 데이터 구조, 즉 map[string]ServerStruct를 활용하는 것입니다. 이를 통해 알 수 없는 서버 이름을 ServerStruct 값을 가리키는 키로 간주할 수 있습니다.
수정된 구조는 다음과 유사합니다.
type YourStruct struct { Success bool ResponseMS int Servers map[string]*ServerStruct } type ServerStruct struct { Application string Owner string [...] }
적절한 JSON 태그를 추가하면 다음을 수행할 수 있습니다. 이제 JSON 데이터를 이 향상된 구조체로 성공적으로 구문 분석합니다.
map[string]ServerStruct 및 JSON 태그를 사용하여 키가 지정되지 않은 필드의 가능성을 수용하면 중첩된 JSON 데이터의 복잡한 구조를 효과적으로 풀고 원하는 정보를 추출할 수 있습니다.
위 내용은 알 수 없는 키와 틀에 얽매이지 않는 필드 구조를 사용하여 중첩된 JSON 데이터를 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!