openlang

제 null을 그대로 유지하고 싶습니다

안녕하세요,

REST API 서버에서 JSON으로 오는 null을 그대로 유지하고 싶습니다. 지금은 구조체로 언마샬링하는데 Null이 제로 값으로 바뀝니다.

간단한 예제나 도움이 되는 영상 링크를 주실 분 있나요? 포인터도 시도했지만 여전히 제로 값이 나와서 어떤 도움이 되는지 이해를 못 했습니다.

영어에서 번역원문 보기

이어지는 대화 3

서로의 근거를 따라
  1. 고유 링크

    안녕하세요 fernvale_54,

    mossglen_55가 이미 말했듯, 대응하는 데이터가 없을 수도 있음을 나타내려면 값을 포인터로 표현할 수 있습니다

    type Entry struct {
        Text *string `json:"bar"`
    }

    null일 수 있는 값을 실제로 존재하는 값처럼 쓰기 전에 반드시 null인지 검사하세요. 그러지 않으면 panic: runtime error: invalid memory address or nil pointer dereference가 나옵니다. 대략 이런 식으로 하면 됩니다:

    var entry Entry
    
    //...unmarsal into Entry
    
    if entry.Text != nil {
        // len() is safe in this branch
        fmt.Println(len(*entry.Text))
    }

    JSON 출력을 정리하려면 omitempty와 omitzero 태그도 살펴보세요 (omitzero는 go 1.24에서 추가되어 꽤 최근 기능이라 아직 자료가 많지 않을 수 있습니다)

    영어에서 번역원문 보기
  2. 고유 링크

    go의 좋은 점 하나는 len()이 정적 함수라는 겁니다. 슬라이스의 길이를 구하거나 순회할 때도 null 검사가 필요하지 않습니다. 대부분의 연산에서 nil 슬라이스는 길이가 0인 것처럼 동작합니다.

    하지만 나머지 기본형, 구조체와 맵에 대해서는 말씀하신 내용이 맞습니다.

    영어에서 번역원문 보기

같은 질문의 다른 갈래

  1. MySQL SELECT에서 조건식을 쓰는 문법은 무엇인가요?

    MySQL을 쓰는데 SQL에서 삼항식과 비슷한 것을 작성하고 싶습니다. 예를 들면: 출력은 대략 이런 모습이면 됩니다: 이걸 어떻게 표현하나요?

    답글 2최근 활동 sql
  2. PostgreSQL 9+에서 있을 수도 있는 열 안전하게 삭제하기

    테이블의 열을 하나 삭제하고 싶습니다. 그 열이 있는지 확인하려면 어떻게 해야 하나요? https://www.postgresql.org/docs/9.2/static/sql-altertable.html, 의 설명서를 읽었지만…

    답글 2최근 활동 sql
  3. SQL 파생 테이블을 거치면 사라지는 필드

    다음 SQL 문을 실행하고 있습니다: 이런 오류가 나옵니다: #1054 - Unknown column 'shipping.post_id' in 'on clause'. 꽤 단순한 코드 같은데 제대로 작동하게 만들지 못하겠습니다.…

    답글 2최근 활동 sql