diff --git a/java/vector/src/main/java/org/apache/arrow/vector/ipc/JsonFileReader.java b/java/vector/src/main/java/org/apache/arrow/vector/ipc/JsonFileReader.java index 5ae970a2e7d..f6383e2d536 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/ipc/JsonFileReader.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/ipc/JsonFileReader.java @@ -318,7 +318,8 @@ protected ArrowBuf read(BufferAllocator allocator, int count) throws IOException for (int i = 0; i < count; i++) { parser.nextToken(); - buf.writeLong(parser.getLongValue()); + String value = parser.getValueAsString(); + buf.writeLong(Long.valueOf(value)); } return buf; @@ -378,7 +379,7 @@ protected ArrowBuf read(BufferAllocator allocator, int count) throws IOException for (int i = 0; i < count; i++) { parser.nextToken(); - BigInteger value = parser.getBigIntegerValue(); + BigInteger value = new BigInteger(parser.getValueAsString()); buf.writeLong(value.longValue()); } diff --git a/java/vector/src/main/java/org/apache/arrow/vector/ipc/JsonFileWriter.java b/java/vector/src/main/java/org/apache/arrow/vector/ipc/JsonFileWriter.java index dfd57c5ab00..8ccd7c0c625 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/ipc/JsonFileWriter.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/ipc/JsonFileWriter.java @@ -273,7 +273,7 @@ private void writeValueToGenerator( generator.writeNumber(IntVector.get(buffer, index)); break; case BIGINT: - generator.writeNumber(BigIntVector.get(buffer, index)); + generator.writeString(String.valueOf(BigIntVector.get(buffer, index))); break; case UINT1: generator.writeNumber(UInt1Vector.getNoOverflow(buffer, index)); @@ -285,7 +285,7 @@ private void writeValueToGenerator( generator.writeNumber(UInt4Vector.getNoOverflow(buffer, index)); break; case UINT8: - generator.writeNumber(UInt8Vector.getNoOverflow(buffer, index)); + generator.writeString(UInt8Vector.getNoOverflow(buffer, index).toString()); break; case FLOAT4: generator.writeNumber(Float4Vector.get(buffer, index));