개발 과정에서 데이터 전송을 위해 JSON 형식을 사용하는 경우가 많습니다. 그러나 때때로 JSON 데이터를 인터페이스로 역마샬링한 후 숫자 데이터가 잘리는 경우가 있습니다. 이것은 매우 흔한 질문이지만, 쉽게 간과되는 질문입니다. 이 기사에서는 PHP 편집자 Zimo가 이 문제의 원인과 이를 방지하고 해결하여 디지털 데이터의 무결성과 정확성을 보장하는 방법을 자세히 소개합니다.
그래서 저는 많은 필드가 포함된 json을 가지고 있고 제안된 대로 이를 반복하고 있습니다. JSON 키를 효율적으로 변경하는 방법 필요하지 않은 일부 키를 제거합니다. 하지만 삭제 후 기존 json의 원래 값이 변경되고 일부는 float인 것처럼 보이므로 이를 보여주기 위해 데모를 만들었습니다.
이 동작을 어떻게 바꾸나요? 응interface{}
导致了该问题吗?为什么1684366653200744506
被截断为1684366653200744400
?
감사합니다!
https://go.dev/play/p/x2auwqwb2fl
참고로 출력 json은 1684366653200744400으로 변경됩니다
2009/11/10 23:00:00 1684366653200744448.000000 2009/11/10 23:00:00 map[timestamp:1.6843666532007444e+18] 2009/11/10 23:00:00 json Marshal from maps of key string and value interface to batch json for insert to DB 2009/11/10 23:00:00 {"timestamp":1684366653200744400}
이는 기본적으로 encoding/json
包将 float64
가 json 번호의 인터페이스 값에 저장되기 때문입니다. json.unmarshal을 참조하세요.
json을 인터페이스 값으로 역마샬링하려면 unmarshal은 인터페이스 값에 다음 중 하나를 저장합니다.
디코더를 만들고 (*decoder).usenumber를 호출하여 동작을 변경할 수 있습니다.
으아악Seehttps://www.php.cn/link/3a6c2c9231df58107434b942fa600b22.
위 내용은 인터페이스에 대한 역마샬링 후 JSON 번호가 잘림의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!