Go의 JSON에 익숙하지 않은 전인류에게

대상 계층

  • 고라는 언어를 처음 접한 사람 및 초급자
  • JS가 올라가서 JS에 걸려서 Go에게 손을 댄 사람
  • 비망록식으로 쓰다
  • Go의 JSON 처리 정보


    원래 Go는 제이슨을 마음대로 사용할 수 없다.(데이터를 추출할 수 없다는 뜻)

    Marshal과 Unmarshal의 차이점을 잘 이해해주세요.


    표준고encoding/json를 사용하면 강력한 무기인 마스홀, 언마르쉬를 얻을 수 있다.

    Marshal은 무엇에 쓰입니까


    인코딩은 메모리 표현식에서 바이트 표현식으로 전환하는 것을 가리킨다.
    ※ 여기서 인코딩을 마셜로 바꿉니다.
    고 구조체에서 JSON을 제작할 수 있다는 것이다.
    type User struct {
      Id int
      Name string `json:"name"`
      Password string `json:"password"`
    }
    
    Tarou, err := json.Marshal(User{
      Id: 1
      Name: "Tarou"
      Password: "tatata1111"
    })
    
    이 인코딩을 사용하여 JSON을 만들 수 있습니다.
    하지만 JSON을 만들었다고 해서 Go로 이 데이터를 처리할 수 있는 것은 아니다.
    이런 상태fmt.Println(Tarou)에서는 의미 불명의 숫자 나열이 나온다.(실제로 이 숫자의 나열은 메모리의 지침을 대표한다.)
    거기에 나오는 건 아래예요.

    Unmarshal


    디코딩은 바이트 표시를 메모리 표현식으로 바꾸는 것을 가리킨다.
    이 뜻 불명의 숫자의 나열은 고정된 형태로 변한다.
    복귀(디코딩)할 때도 Go 구조체가 필요하기 때문에 재사용이 가능하다.
    type User struct {
      Id int
      Name string `json:"name"`
      Password string `json:"password"`
    }
    
    Tarou, err := json.Marshal(User{
      Id: 1
      Name: "Tarou"
      Password: "tatata1111"
    })
    
    var u User
    if err := json.Unmarshal([]byte(u), &u); err != nil {
      fmt.Println(err)
    }
    
    Name := u.Name
    Password := u.Password
    
    이렇게 요구할 수 있습니다.
    여기에는 코드에 대한 자세한 설명이 없고 Unmarshal은 첫 번째 매개변수에 지정된 JSON을 두 번째 매개변수에 지정된 포인터에 저장합니다.
    그래서 이번에는 u라는 변수에 JSON의 데이터를 넣었다.
    이렇게 말하지만 자세한 상황은 아직 모르니, 학식자가 나에게 교수를 해 줄 수 있다면 정말 좋겠다

    결론


    많은 글을 썼지만 역시 Go를 쓰게 되어 기쁩니다~

    참고 문헌


    https://zenn.dev/hsaki/articles/go-convert-json-struct
    https://post-output.com/go-marshal-unmarshal/

    자기 소개


    https://github.com/ryuji-cre8ive

    좋은 웹페이지 즐겨찾기