Golang을 사용하여 JSON에서 정수를 정수로, 부동 소수점을 부동 소수점으로 구문 분석
다음으로 전달할 JSON 레코드 스트림을 수신하는 Golang 애플리케이션 데이터 저장소(InfluxDB)에서는 유형 충돌을 피하기 위해 정수 및 부동 소수점 값의 원래 데이터 유형을 유지하는 것이 중요합니다. 성공적인 쓰기 작업을 보장합니다. Ruby JSON 파서가 이 작업을 쉽게 수행하는 동안 Golang의 인코딩/json 패키지는 처음에 모든 숫자를 부동 소수점으로 구문 분석하므로 잠재적으로 유형 불일치 및 쓰기 오류가 발생할 수 있습니다.
사용자 정의 JSON 값을 사용한 해결 방법
Ruby JSON 파서의 동작을 복제하기 위한 한 가지 접근 방식은 사용자 정의 JSON 값에 대한 일반 Go 메커니즘을 활용하는 것입니다. 이 방법에서는 JSON 숫자를 바이트 배열(json.RawMessage)로 표현하고 strconv.ParseInt 및 strconv.ParseFloat를 사용하여 구문 분석합니다. 이를 통해 정수 및 부동 소수점의 정확한 변환이 가능합니다.
import ( "encoding/json" "fmt" "strconv" ) func main() { str := `{"a":123,"b":12.3,"c":"123","d":"12.3","e":true}` var raw map[string]json.RawMessage err := json.Unmarshal([]byte(str), &raw) if err != nil { panic(err) } parsed := make(map[string]interface{}, len(raw)) for key, val := range raw { s := string(val) i, err := strconv.ParseInt(s, 10, 64) if err == nil { parsed[key] = i continue } f, err := strconv.ParseFloat(s, 64) if err == nil { parsed[key] = f continue } var v interface{} err = json.Unmarshal(val, &v) if err == nil { parsed[key] = v continue } parsed[key] = val } for key, val := range parsed { fmt.Printf("%T: %v %v\n", val, key, val) } }
출력:
int64: a 123 float64: b 12.3 string: c 123 string: d 12.3 bool: e true
json.Number 유형 사용
대체 접근 방식은 Go json.Number 유형을 사용하는 것입니다. JSON 데이터에서 정수와 부동 소수점을 직접 구문 분석:
import ( "encoding/json" "fmt" "strings" ) func main() { str := `{"a":123,"b":12.3,"c":"123","d":"12.3","e":true}` var parsed map[string]interface{} d := json.NewDecoder(strings.NewReader(str)) d.UseNumber() err := d.Decode(&parsed) if err != nil { panic(err) } for key, val := range parsed { n, ok := val.(json.Number) if !ok { continue } if i, err := n.Int64(); err == nil { parsed[key] = i continue } if f, err := n.Float64(); err == nil { parsed[key] = f continue } } for key, val := range parsed { fmt.Printf("%T: %v %v\n", val, key, val) } }
출력:
int64: a 123 float64: b 12.3 string: c 123 string: d 12.3 bool: e true
이러한 방법은 원본 데이터 유형을 보존하기 위한 효과적인 솔루션을 제공합니다. Golang에서 JSON을 구문 분석하는 동안 정수 및 부동 소수점을 사용하여 정확하고 안정적인 데이터 처리를 보장합니다.
위 내용은 Golang의 JSON에서 정수와 부동 소수점을 어떻게 정확하게 구문 분석할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

WhentestinggocodewithInitFunctions, useExplicitSetUpFunctionsOrsParateTestOvoiddenceNInItfictionSideffects.1) useExplicitSetUpFunctoControlGlobalVariableInitialization.2) CreateSeparateTesteSpilestobySinitFunctions 및 testesten

go'serrorhandlingreturnserrorsvalues whithuseexceptions와 달리 1) Go'sMethodensuresexpliciterRorhandling, promotingrobustcodebutincreasingverbosity.2) Javaandthon'sexextionslowercodebutcodebutcodebutcanlederforlortorifneterfortorifneteriflerortorifnetrorirederiflofertorifneateRoferfortoriflogertoflortoflerortofneateRofer

AneffectiveInterfaceingoisminimal, Clear, and Promotesloosecoupling.1) Minimizetheinterfaceforflexibilityandeasofimplementation.2) usicfacesforabStractionToswapimementationswhangingCallingCode.3) DesignStabilitySUsingInterfacestomockDep

중앙 집중식 오류 처리는 GO 언어에서 코드의 가독성과 유지 가능성을 향상시킬 수 있습니다. 구현 방법 및 장점에는 다음이 포함됩니다. 1. 비즈니스 로직에서 별도의 오류 처리 로직 및 코드를 단순화합니다. 2. 중앙 처리로 오류 처리의 일관성을 확인하십시오. 3. 연기 및 복구를 사용하여 공황을 포착하고 처리하여 프로그램 견고성을 향상시킵니다.

Ingo, alternativestoinitFunctionsincustomInitializationFenctionsandsingletons.1) CustomInitializationFunctionsallowExplicitControlover wheninInitializationOccurs, lexplodElayEdorConditionalSetUps.2) SingletEntensureOne-TimeInitializationIncOncurrent

gohandlesinterfacesandtypeassertionsefectively, codeflexibleandrobustness.1) typeSertionsOncaLownallowRuntImeTypeChecking, asseengehapeInterfaceAndCircLetype.2) TypeStwitchEshandleMultipleTypesePesePesePesePesePese -pervariousShapesimplementing Gry

GO 언어 오류 처리는 오류와 오류를 통해 더욱 유연하고 읽을 수 있습니다. 1.Errors.is는 오류가 지정된 오류와 동일한 지 확인하는 데 사용되며 오류 체인의 처리에 적합합니다. 2. 오류. 오류 유형을 확인할 수있을뿐만 아니라 오류를 특정 유형으로 변환 할 수 있으며 오류 정보 추출에 편리합니다. 이러한 기능을 사용하면 오류 처리 로직을 단순화 할 수 있지만 오류 체인의 올바른 전달에주의를 기울이고 코드 복잡성을 방지하기 위해 과도한 의존성을 피하십시오.

TomakeGoApplicationSRUNFASTERONDERFISTING, 사용 프로파일 링 툴, leverageConcurrency, andManageMemoryEffice.1) usepprofforcpuandMemoryProfingToIndifyBottLenecks.2) UtizeGoroutinesandChannelStoparAllelizetAskSandimProvePercormance.3) 3)


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

드림위버 CS6
시각적 웹 개발 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.