> 백엔드 개발 > Golang > Go에서 JSON 개체를 구조체 배열로 역마샬링하는 방법은 무엇입니까?

Go에서 JSON 개체를 구조체 배열로 역마샬링하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-29 13:26:19
원래의
257명이 탐색했습니다.

How to Unmarshal a JSON Object into an Array of Structs in Go?

Go에서 객체 배열로 JSON을 역마샬링하는 방법

질문

Go에서 다음 JSON을 객체 배열로 역마샬링하려면 어떻게 해야 합니까? 언어?

{
    "1001": {"level":10, "monster-id": 1001, "skill-level": 1, "aimer-id": 301},
    "1002": {"level":12, "monster-id": 1002, "skill-level": 1, "aimer-id": 302},
    "1003": {"level":16, "monster-id": 1003, "skill-level": 2, "aimer-id": 303}
}
로그인 후 복사

솔루션

제공된 JSON이 유효하려면 최상위 개체의 키-값 쌍 사이에 쉼표를 추가하는 등 일부 수정이 필요합니다.

{
   "1001":{
      "level":10,
      "monster-id":1001,
      "skill-level":1,
      "aimer-id":301
   },
   "1002":{
      "level":12,
      "monster-id":1002,
      "skill-level":1,
      "aimer-id":302
   },
   "1003":{
      "level":16,
      "monster-id":1003,
      "skill-level":2,
      "aimer-id":303
   }
}
로그인 후 복사

이 JSON을 객체 배열로 역마샬링하려면 다음을 사용할 수 있습니다. 코드:

type Monster struct {
    MonsterId  int32 `json:"monster-id"`
    Level      int32 `json:"level"`
    SkillLevel int32 `json:"skill-level"`
    AimerId    int32 `json:"aimer-id"`
}

type MonsterCollection struct {
    Pool map[string]Monster
}

func (mc *MonsterCollection) FromJson(jsonStr string) error {
    var data =&mc.Pool
    b := []byte(jsonStr)
    return json.Unmarshal(b, data)
}
로그인 후 복사

이 코드에서:

  • Monster 구조체는 객체의 구조를 나타냅니다.
  • MonsterCollection 구조체에는 몬스터 풀이 포함되어 있습니다. 문자열로 입력됩니다.
  • FromJson 메서드는 JSON 문자열을 풀로 역마샬링합니다. map.

오류 반환은 디버깅 목적에 유용하므로 잘못된 JSON 구문과 같은 오류를 감지할 수 있습니다.

실제 예제는 Golang Playground에서 찾을 수 있습니다: http: //play.golang.org/p/4EaasS2VLL.

위 내용은 Go에서 JSON 개체를 구조체 배열로 역마샬링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿