Go에서 문자열을 float64로 유형 변환하여 JSON을 디코딩
float64 값이 포함된 JSON 문자열을 구문 분석하면 값을 저장할 때 문제가 발생할 수 있습니다. 문자열로. 이 문제를 해결하기 위해 Go는 간단한 솔루션을 제공합니다.
오류 이해:
"{"name":"Galaxy Nexus와 같은 JSON 문자열을 디코딩하려고 할 때 ", "price":"3460.00"}" json.Unmarshal 함수를 사용하면 다음과 같은 상황이 발생할 수 있습니다. 오류:
json: cannot unmarshal string into Go value of type float64
이 오류는 JSON 디코더가 float64 숫자의 문자열 표현을 지원되지 않는 float64 값으로 직접 변환하려고 시도하기 때문에 발생합니다.
해결책: 유형 변환 주석
이 문제를 해결하려면 문자열을 문자열로 처리하도록 디코더에 명시적으로 지시해야 합니다. 유형 변환 주석을 사용하는 float64. 이 주석은 Product 구조체의 필드 정의에 추가됩니다.
type Product struct { Name string Price float64 `json:",string"` }
",string" 태그는 JSON 디코더에 Price 필드가 float64로 변환되어야 하는 문자열임을 알려줍니다.
업데이트된 코드:
업데이트된 Go는 다음과 같습니다. 코드:
package main import ( "encoding/json" "fmt" ) type Product struct { Name string Price float64 `json:",string"` } func main() { s := `{"name":"Galaxy Nexus", "price":"3460.00"}` var pro Product err := json.Unmarshal([]byte(s), &pro) if err == nil { fmt.Printf("%+v\n", pro) } else { fmt.Println(err) fmt.Printf("%+v\n", pro) } }
예상 출력:
이 코드를 실행하면 예상 출력이 생성됩니다.
{Name:Galaxy Nexus Price:3460}
json.Unmarshal 함수가 성공적으로 수행되었습니다. JSON 문자열을 디코딩하고 가격을 문자열에서 float64로 변환했습니다.
위 내용은 Go에서 문자열로 저장된 Float64 값으로 JSON 문자열을 디코딩하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!