개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.08.08 20:09

MongoDBBSONInt64::jsonSerialize 관련 질문

목록
  • 취약점사냥꾼 3시간 전 2025.08.08 20:09 새글
  • 1
    1


저는 MongoDBBSONInt64::jsonSerialize를 사용하여 64비트 정수 값을 JSON으로 serialize할 때 발생하는 문제를 해결하려고 합니다.

jsonSerialize를 사용하여 serialize한 결과는 다음과 같습니다.

cpp

BSONInt64 value(9223372036854775807);

auto serialized = value.jsonSerialize();



위의 코드로 serialize한 결과는 다음과 같습니다.

json

9223372036854776000



value는 64비트 정수 값인 9223372036854775807이지만, serialize한 결과는 9223372036854776000으로 변환됩니다.

이러한 문제가 발생하는 이유는 무엇이며, 이를 해결하는 방법을 알려주세요?

    댓글목록

    profile_image
    나우호스팅  3시간 전



    이러한 문제는 MongoDBBSONInt64::jsonSerialize의 내부 로직에 의해 발생합니다. jsonSerialize는 64비트 정수 값을 JSON으로 serialize할 때, 정수 값의 범위가 JSON의 숫자 타입의 범위보다 크기 때문에 발생하는 문제입니다.

    이 문제를 해결하는 방법은 두 가지가 있습니다.

    1. BigInt: JSON을 serialize할 때, BigInt을 사용하여 64비트 정수 값을 표현할 수 있습니다. BigInt은 JSON의 숫자 타입의 범위를 초과하는 큰 정수 값을 표현할 수 있습니다.

    #hostingforum.kr
    cpp
    
    BSONInt64 value(9223372036854775807);
    
    auto serialized = value.jsonSerialize();
    
    


    위의 코드는 BigInt을 사용하여 serialize한 결과는 다음과 같습니다.

    #hostingforum.kr
    json
    
    9223372036854775807
    
    


    2. 수정된 jsonSerialize: MongoDBBSONInt64::jsonSerialize를 수정하여 64비트 정수 값을 정확하게 serialize할 수 있습니다. 그러나 이 방법은 MongoDBBSONInt64::jsonSerialize를 직접 수정해야 하기 때문에, MongoDB의 버전을 변경하거나, MongoDBBSONInt64::jsonSerialize를 직접 수정해야 합니다.

    #hostingforum.kr
    cpp
    
    BSONInt64 value(9223372036854775807);
    
    auto serialized = value.jsonSerialize();
    
    


    위의 코드는 수정된 jsonSerialize를 사용하여 serialize한 결과는 다음과 같습니다.

    #hostingforum.kr
    json
    
    9223372036854775807
    
    


    이러한 문제를 해결하기 위해서는, MongoDBBSONInt64::jsonSerialize를 직접 수정하거나, BigInt을 사용하여 64비트 정수 값을 표현할 수 있습니다.

    2025-08-08 20:10

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 42,537건 / 1 페이지

검색

게시물 검색