Golang에서 언 마셜링하는 동안 필드가 json에서 발견되지 않으면 오류를 생성 할 수 있습니까? 문서에서 찾을 수 없었습니다. 필요한대로 필드를 지정하는 태그가 있습니까?Golang의 json을 언 마샬링하는 중 : 필수 입력란?
28
A
답변
34
encoding/json
패키지에 필드를 "필수"로 설정하는 태그가 없습니다. 자신의 MarshalJSON()
메소드를 작성하거나 누락 된 필드에 대한 점검을 수행해야합니다.
type JsonStruct struct {
String *string
Number *float64
}
전체 작업 예 :
package main
import (
"fmt"
"encoding/json"
)
type JsonStruct struct {
String *string
Number *float64
}
var rawJson = []byte(`{
"string":"We do not provide a number"
}`)
func main() {
var s *JsonStruct
err := json.Unmarshal(rawJson, &s)
if err != nil {
panic(err)
}
if s.String == nil {
panic("String is missing or null!")
}
if s.Number == nil {
panic("Number is missing or null!")
}
fmt.Printf("String: %s Number: %f\n", *s.String, *s.Number)
}
2
이 필드를 누락 확인하려면 , 당신은/누락 된 널 (null)과 0 값을 구분하기 위해 포인터를 사용해야합니다
필드를 포인터로 만들지 않고도 특정 유형에 대한 언 마샬링을 재정의 할 수 있습니다 (따라서 몇 개의 json 레이어에 필수 필드가 있음).
type EnumItem struct {
Named
Value string
}
func (item *EnumItem) UnmarshalJSON(data []byte) (err error) {
required := struct {
Value *string `json:"value"`
}{}
all := struct {
Named
Value string `json:"value"`
}{}
err = json.Unmarshal(data, &required)
if err != nil {
return
} else if required.Value == nil {
err = fmt.Errorf("Required field for EnumItem missing")
} else {
err = json.Unmarshal(data, &all)
item.Named = all.Named
item.Value = all.Value
}
return
}
관련 문제
- 1. json을 XML보다 쉽게 언 마샬링하는 이유
- 2. 태그가있는 이동의 JSON을 언 마샬링/마샬링하는 방법은 무엇입니까?
- 3. 연락처에 필수 입력란 작성 시도 중
- 4. 필수 입력란 값 유형
- 5. Kohana 3.3 : 필수 입력란
- 6. devise - 필수 입력란 표시
- 7. 정수로만 채워야하는 필수 입력란
- 8. 경계 필수 입력란 지우기
- 9. 트리거가있는 필수 입력란 관리
- 10. 필수 입력란 오류
- 11. PHP 양식 필수 입력란
- 12. json을 golang의 배열 요청으로 변환하십시오.
- 13. CSV 파일을 자바 객체로 언 마샬링하는 방법
- 14. jaxb를 사용하여 마샬링/언 마샬링하는 방법은 무엇입니까?
- 15. 개체를 부분적으로 마샬링/언 마샬링하는 방법은 무엇입니까?
- 16. jquery 숨김 양식 필수 입력란
- 17. 모델 업데이트시 Laravel 필수 입력란
- 18. 필수 입력란 비어있는 텍스트 상자
- 19. 양식 유효성 검사 필수 입력란
- 20. swiftmailer 문의 양식 필수 입력란
- 21. 검도 정보 datepicker 필수 입력란
- 22. 정규식 유효성 검사기, 필수 입력란
- 23. Adobe 9 확인란 필수 입력란
- 24. 굵은 글씨로 필수 입력란 표시
- 25. 성능 카운터를 마샬링하는 중 #
- 26. Java 클래스에 JSON 객체를 언 마샬링하는 방법은 무엇입니까?
- 27. Grails와 Java : Java 응용 프로그램에서 Grails의 Json을 언 마샬링하는 적절한 방법
- 28. 자바 스크립트를 사용하여 PHP 문의 필수 입력란
- 29. HTML5 필수 입력란 및 angularjs와 함께 제출
- 30. PHP 폼 유효성 검사 필수 입력란
또는 숫자를 사용하지 않는 한 대부분의 경우 기본값으로 충분할 수도 있습니다. – Matt3o12
그러나 "필수 입력란"의 값이 기본값 인 경우 어떻게해야합니까? – AJPennster
숫자의 필수 입력란이 0 일 수 있고 제공된 입력란이 맞는지 확인한 다음 대신에 문자열을 사용하여 입력이없는 것을 확인한 후 그 번호로 변환하십시오. – Zanven