golang 에서 json. Number 의 묘 용
2891 단어 go.
최근 에 한 스 와 API 인 터 페 이 스 를 디 버 깅 하고 인터페이스 반환 데 이 터 는
json
형식 이 며 문서 설명 에 따라 전체 데이터 이 므 로 다음 과 같이 정의 합 니 다. type Data struct {
Api int `json:"api"`
}
입 참 이 같은 상황 에서 첫 번 째 호출 에서 얻 은 결 과 는:
{"api":1}
그러나 두 번 째 호출 결 과 는:
{"api":"1"}
상대방 개발 자 와 소통 한 후에 이것 은 bug 라 는 것 을 알 게 되 었 습 니 다. 절차 문제 로 인해 즉시 온라인 을 수정 할 수 없 었 습 니 다. 생각해 보 니 제 가 호 환 하 는 것 이 좋 겠 습 니 다. 효 과 는
{"api":1}
도 해석 할 수 있 고 {"api":"1"}
도 해석 할 수 있 기 때문에 저 는 생각 했 습 니 다 json.Number
. Number 유형 정 의 는 다음 과 같 습 니 다.The representation of numbers is similar to that used in most programming languages. A number is represented in base 10 using decimal digits. It contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part. Leading zeros are not allowed.
간단하게 번역:
Number
10 진수 로 표시 할 수 있 지만 선도 0 데 이 터 는 허용 되 지 않 습 니 다 (좋 습 니 다. 여기 가 적당 하지 않 습 니 다. 예 를 들 어 이런 012
, -012
등 우 리 는 데이터 구 조 를 재 조정 합 니 다. type Data struct {
Api json.Number `json:"api"`
}
데이터 분석
var d Data
err := json.Unmarshal([]byte(`{"api":"12"}`), &d)
실제로 우리 가 직면 한 문 제 는 데이터 가 10 진수 일 것 이다. 그러나
""
번호 가 있 는 지 없 는 지 는 확실 하지 않다. json.Number
는 데이터 라 는 개념 을 추상 화하 고 유형 을 확보 하 는 전제 에서 호출 자가 최종 적 으로 사용 하 는 유형 을 결정 하 는 데 도움 을 주 었 다.// String returns the literal text of the number.
func (n Number) String() string { return string(n) }
// Float64 returns the number as a float64.
func (n Number) Float64() (float64, error) {
return strconv.ParseFloat(string(n), 64)
}
// Int64 returns the number as an int64.
func (n Number) Int64() (int64, error) {
return strconv.ParseInt(string(n), 10, 64)
}
저 는 안전하게 사용 할 수 있어 요.
d.Api.Int64()
원 하 는 타 입 을 얻는다.
API 인 터 페 이 스 는 float 0.0 을 출력 해 야 하 며, 이러한 json. Number 로 처리 할 수도 있다.
{
"profit": 9.0000,
"issuePeriod": 0.0
}
json.Number(fmt.Sprintf(`%.2f`, 1.0000))
물론 내 문 제 는
RawMessage
유형 으로 해결 할 수 있다. type Data struct {
Api json.RawMessage `json:"api"`
}
문서 의 해석 은 다음 과 같다.
// RawMessage is a raw encoded JSON value.
// It implements Marshaler and Unmarshaler and can
// be used to delay JSON decoding or precompute a JSON encoding.
type RawMessage []byte
필드 이름 을 확인 하고
json
안의 원시 데이터 값 을 가 져 와 원 하 는 유형 으로 전환 합 니 다.원본 코드 를 자주 읽 고 항상 새것 을 읽는다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
go 의 값 전달 과 참조 전달절편 과 지 도 는 모두 인용 유형 이다.현지에서 새로운 변수 로 할당 되 었 을 때 같은 내부 데이터 구 조 를 가리킨다.따라서 그 중의 한 변 수 를 바 꾸 면 다른 변수 에 영향 을 줄 수 있다. 다음은 참조 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.