diff --git a/lib/js/package.json b/lib/js/package.json
index c4bcc6d..a35ac15 100644
--- a/lib/js/package.json
+++ b/lib/js/package.json
@@ -16,7 +16,7 @@
   },
   "dependencies": {
     "jsdoc": "^3.5.5",
-    "json-int64": "^0.0.3",
+    "json-int64": "^1.0.0",
     "nopt": "^4.0.1"
   }
 }
diff --git a/lib/js/test/test-int64.html b/lib/js/test/test-int64.html
index 620e6ff..bcb05fb 100644
--- a/lib/js/test/test-int64.html
+++ b/lib/js/test/test-int64.html
@@ -25,6 +25,7 @@
       <script src="build/js/thrift.js" type="text/javascript" charset="utf-8"></script>
       <!-- browserified node-int64 -->
       <script src="build/js/lib/Int64.js" type="text/javascript" charset="utf-8"></script>
+      <script src="build/js/lib/JSONInt64.js" type="text/javascript" charset="utf-8"></script>
       <!-- int64 constants to check -->
       <script src="gen-js/Int64Test_types.js" type="text/javascript" charset="utf-8"></script>
 
diff --git a/lib/js/test/test-int64.js b/lib/js/test/test-int64.js
index 4df87e1..cf7e828 100644
--- a/lib/js/test/test-int64.js
+++ b/lib/js/test/test-int64.js
@@ -86,6 +86,12 @@
     for (let i = 0; i < EXPECTED_INT64_LIST.length; ++i) {
       assert.ok(EXPECTED_INT64_LIST[i].equals(Int64Test.INT64_LIST[i]));
     }
+
+    for (let i = 0; i < EXPECTED_INT64_LIST.length; ++i){
+      let int64Object = EXPECTED_INT64_LIST[i];
+      assert.ok(Int64Test.INT64_2_INT64_MAP[JSONInt64.toDecimalString(int64Object)].equals(int64Object));
+    }
+
     console.log('Int64 test -- ends');
   });
 
diff --git a/lib/nodejs/test/int64.test.js b/lib/nodejs/test/int64.test.js
index 106e446..27ad28c 100644
--- a/lib/nodejs/test/int64.test.js
+++ b/lib/nodejs/test/int64.test.js
@@ -18,6 +18,7 @@
  */
 
 const Int64 = require("node-int64");
+const JSONInt64 = require("json-int64");
 const i64types = require("./gen-nodejs-es6/Int64Test_types.js");
 const test = require("tape");
 
@@ -72,6 +73,16 @@
     for (let i = 0; i < EXPECTED_INT64_LIST.length; ++i) {
       assert.ok(EXPECTED_INT64_LIST[i].equals(i64types.INT64_LIST[i]));
     }
+
+    for (let i = 0; i < EXPECTED_INT64_LIST.length; ++i) {
+      const int64Object = EXPECTED_INT64_LIST[i];
+      assert.ok(
+        i64types.INT64_2_INT64_MAP[
+          JSONInt64.toDecimalString(int64Object)
+        ].equals(int64Object)
+      );
+    }
+
     assert.end();
   }
 };
diff --git a/lib/nodets/test/int64.test.ts b/lib/nodets/test/int64.test.ts
index 3ff0d85..d209234 100644
--- a/lib/nodets/test/int64.test.ts
+++ b/lib/nodets/test/int64.test.ts
@@ -18,6 +18,7 @@
  */
 
 import Int64 = require("node-int64");
+import JSONInt64 = require('json-int64');
 import i64types = require("./gen-nodejs/Int64Test_types");
 import test = require("tape");
 
@@ -72,6 +73,12 @@
     for (let i = 0; i < EXPECTED_INT64_LIST.length; ++i) {
       assert.ok(EXPECTED_INT64_LIST[i].equals(i64types.INT64_LIST[i]));
     }
+
+    for (let i = 0; i < EXPECTED_INT64_LIST.length; ++i){
+      let int64Object = EXPECTED_INT64_LIST[i];
+      assert.ok(i64types.INT64_2_INT64_MAP[JSONInt64.toDecimalString(int64Object)].equals(int64Object));
+    }
+
     assert.end();
   }
 };
diff --git a/lib/ts/package.json b/lib/ts/package.json
index 47eec62..1a1ccdc 100644
--- a/lib/ts/package.json
+++ b/lib/ts/package.json
@@ -23,7 +23,7 @@
   "dependencies": {
     "bufferutil": "^4.0.1",
     "jsdoc": "^3.5.5",
-    "json-int64": "^0.0.3",
+    "json-int64": "^1.0.0",
     "nopt": "^4.0.1"
   },
   "types": "./thrift.d.ts"
diff --git a/lib/ts/test/test-int64.ts b/lib/ts/test/test-int64.ts
index 3ea7919..254d8d7 100644
--- a/lib/ts/test/test-int64.ts
+++ b/lib/ts/test/test-int64.ts
@@ -19,6 +19,7 @@
  /* jshint -W100 */
 
 var Int64 = require("node-int64");
+var JSONInt64 = require("json-int64");
 import { Int64Test } from "./gen-js/Int64Test_types";
 
 
@@ -89,6 +90,12 @@
     for (let i = 0; i < EXPECTED_INT64_LIST.length; ++i) {
       assert.ok(EXPECTED_INT64_LIST[i].equals(Int64Test.INT64_LIST[i]));
     }
+
+    for (let i = 0; i < EXPECTED_INT64_LIST.length; ++i){
+      let int64Object = EXPECTED_INT64_LIST[i];
+      assert.ok(Int64Test.INT64_2_INT64_MAP[JSONInt64.toDecimalString(int64Object)].equals(int64Object));
+    }
+
     console.log('Int64 test -- ends');
   });
 
