Golang Json 지수가 있는 숫자 비마샬링
JSON 문자열을 Golang의 구조체로 역마샬링할 때 지수가 있는 숫자 값이 0으로 해석되는 경우가 많습니다. 지수는 JSON의 표준 부분이므로 이는 어려울 수 있습니다.
이 문제를 해결하려면 숫자 필드의 유형을 float32 또는 float64로 수정해야 합니다. 이러한 부동 소수점 유형은 지수 표현을 지원합니다. 예:
type Person struct { Id float64 `json:"id"` _Id int64 Name string `json:"name"` }
유형을 변경한 후 JSON 문자열을 구조체로 역마샬링하면 숫자 값을 지수로 올바르게 구문 분석합니다.
도우미 함수를 사용한 대체 접근 방식
숫자 필드가 정수여야 하는 경우 도우미 함수를 사용하여 마샬링 해제 후 부동 소수점 값을 정수 유형으로 변환:
import ( "encoding/json" "fmt" "math" "os" "reflect" ) type Person struct { Id float64 `json:"id"` _Id int64 Name string `json:"name"` } var f Person var b = []byte(`{"id": 1.2e+8, "Name": "Fernando"}`) func main() { _ = json.Unmarshal(b, &f) if reflect.TypeOf(f._Id) == reflect.TypeOf((int64)(0)) { fmt.Println(math.Trunc(f.Id)) f._Id = int64(f.Id) } }
이 예에서 도우미 함수 math.Trunc는 부동 소수점 값을 정수로 자릅니다. 그러면 잘린 값이 _Id 필드에 할당됩니다.
위 내용은 Golang에서 지수를 사용하여 JSON 숫자 값을 비정렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!