대표적인 변형 추가
같은 응답 형식의 레코드를 배열로 묶으세요. 다른 속성 위치의 객체는 모양이 같아도 별도 중첩 타입을 사용합니다.
타입 생성
두 예제 레코드의 차이를 확인하세요. 결과에는 패키지 선언과 필요한 import가 포함됩니다.
현재 브라우저에서 분석하고 생성합니다. 입력을 업로드하거나 저장하지 않습니다.
선언 3개 · 포인터 타입 2개
JSON to Go는 API 응답으로 모델 초안을 만들 때 유용합니다. 같은 응답의 여러 레코드를 배열에 넣어 누락되는 필드, null, 타입 변화를 함께 반영하세요.
표본에 없는 값이나 필수 조건은 알아낼 수 없습니다. 생성한 타입을 실제 API 계약과 비교하고 프로젝트에서 테스트해야 합니다.
JSON to Go는 같은 배열 위치의 모든 원소를 검사합니다. 두 번째 레코드에만 있는 필드도 남기고, 구체적인 값과 null 또는 누락이 함께 관찰되면 포인터를 사용할 수 있습니다.
int64 범위의 일반 정수는 int64가 됩니다. 소수, 지수, 범위 밖 정수는 json.Number를 사용해 JavaScript 부동소수점 변환 중 자릿수가 사라지는 일을 피합니다.
같은 응답 형식의 레코드를 배열로 묶으세요. 다른 속성 위치의 객체는 모양이 같아도 별도 중첩 타입을 사용합니다.
시간 원문이 필요하면 날짜 추론을 끄세요. 중첩 이름을 끄면 익명 구조체를 만듭니다. json 태그를 끄면 원래 키의 매핑도 사라지므로 디코딩 전에 확인해야 합니다.
자동 생성은 수정 후 350ms를 기다립니다. 끄면 생성 버튼이나 Ctrl/Cmd+Enter를 사용합니다. 수정 즉시 내보내기를 막고 최신 결과가 성공한 뒤 다시 활성화합니다.
Go 구조체 변환기는 snake_case와 camelCase를 대문자로 시작하는 ASCII 이름으로 만듭니다. ID 같은 약어를 유지하고 충돌에는 숫자를 붙입니다. 태그가 켜져 있으면 지원되는 원래 키를 보존합니다.
구체적인 스칼라나 구조체에 누락 또는 null이 있으면 기본적으로 포인터 타입을 씁니다. 슬라이스와 맵은 자체로 nil을 나타냅니다. null만 있으면 any이며 포인터도 누락과 명시적 null을 구분하지 못합니다.
일반 정수 표기이면서 int64 범위 안일 때만 int64입니다. 1.0과 1e3도 json.Number로 처리합니다. encoding/json이 그 표기를 정수로 직접 디코딩하지 않기 때문이며, 계산 전 변환 오류도 확인해야 합니다.
완전하고 유효한 RFC3339이며 소수 초가 아홉 자리 이하인 문자열만 time.Time으로 추론합니다. 같은 위치의 모든 비-null 문자열이 조건을 충족해야 합니다. 루트 타입 별칭은 원래 타입의 디코딩 메서드를 보존합니다.
대문자로 시작하는 내보낸 ASCII 이름으로 바꾸고 ID 등 약어를 유지합니다. 충돌에는 숫자 접미사를 붙이며, 켜진 태그가 원래 키를 연결합니다. 태그를 끄면 디코더의 필드 이름 매칭 결과가 달라질 수 있습니다.
스칼라나 구조체 타입의 근거가 있으면 포인터를 사용하고 null만 있으면 any를 씁니다. 슬라이스와 맵은 nil을 직접 나타냅니다. 누락과 명시적 null은 포인터만으로 구분할 수 없습니다.
int64 범위의 일반 정수 토큰은 int64이고, 소수나 지수 또는 더 큰 정수는 json.Number입니다. 혼합 any 위치는 Decoder.UseNumber()를 따로 설정해야 합니다.
호환되지 않는 값이 같은 위치에 나타나면 any가 됩니다. 첫 원소만 보지 않고 모든 원소를 검사하므로 뒤쪽에서 나타난 타입 차이도 반영됩니다.
JSON to Go는 객체, 배열, 문자열, 숫자, 불리언과 null을 지원합니다. 객체가 아닌 루트는 타입 별칭으로 만들기 때문에 time.Time과 json.Number의 기존 메서드가 유지됩니다.
추론 사례를 개선하고 싶으신가요?