> 백엔드 개발 > Golang > Go에서 문자열로 저장된 Float64 값으로 JSON 문자열을 디코딩하는 방법은 무엇입니까?

Go에서 문자열로 저장된 Float64 값으로 JSON 문자열을 디코딩하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2025-01-01 12:59:11
원래의
188명이 탐색했습니다.

How to Decode JSON Strings with Float64 Values Stored as Strings in Go?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿