diff --git a/lib/py/test/thrift_json.py b/lib/py/test/thrift_json.py
index 40e7a47..125ea59 100644
--- a/lib/py/test/thrift_json.py
+++ b/lib/py/test/thrift_json.py
@@ -46,6 +46,71 @@
             unicode_text = unicode_text.encode('utf8')
         self.assertEqual(protocol.readString(), unicode_text)
 
+    def test_TJSONProtocol_write(self):
+        write_data = '{"software":"thrift","1":[23,1.2010000000000001,32767,2147483647,9223372036854775807],"base64":"aGVsbG8gdGhyaWZ0","bool":0}'
+
+        buff = TTransport.TMemoryBuffer()
+        transport = TTransport.TBufferedTransportFactory().getTransport(buff)
+        protocol = TJSONProtocol(transport)
+        protocol.writeJSONObjectStart()
+        protocol.writeJSONString("software")
+        protocol.writeJSONString("thrift")
+        protocol.writeJSONString("1")
+        protocol.writeJSONArrayStart()
+        protocol.writeJSONNumber(23)
+        protocol.writeDouble(1.201)
+        protocol.writeI16(32767)
+        protocol.writeI32(2147483647)
+        protocol.writeI64(9223372036854775807)
+        protocol.writeJSONArrayEnd()
+        protocol.writeJSONString("base64")
+        protocol.writeJSONBase64("hello thrift".encode('utf-8'))
+        protocol.writeJSONString("bool")
+        protocol.writeBool(0)
+        protocol.writeJSONObjectEnd()
+
+        transport.flush()
+        value = buff.getvalue()
+
+        self.assertEqual(write_data, value.decode('utf-8'))
+
+    def test_TJSONProtol_read(self):
+        expected = "{'software':'thrift','1':[23,1.2010000000000001,32767,2147483647,9223372036854775807],'base64':'hello thrift','bool':False}"
+        read_data = '{"software":"thrift","1":[23,1.2010000000000001,32767,2147483647,9223372036854775807],"base64":"aGVsbG8gdGhyaWZ0","bool":0}'
+
+        buff = TTransport.TMemoryBuffer(read_data.encode('utf-8'))
+        transport = TTransport.TBufferedTransportFactory().getTransport(buff)
+        protocol = TJSONProtocol(transport)
+        protocol.readJSONObjectStart()
+        u_1 = protocol.readString()
+        u_2 = protocol.readString()
+        u_3 = protocol.readString()
+        protocol.readJSONArrayStart()
+        u_4 = protocol.readNumber()
+        u_5 = protocol.readDouble()
+        u_6 = protocol.readI16()
+        u_7 = protocol.readI32()
+        u_8 = protocol.readI64()
+        protocol.readJSONArrayEnd()
+        u_9 = protocol.readString()
+        u_10 = protocol.readJSONBase64()
+        u_11 = protocol.readString()
+        u_12 = protocol.readBool()
+        protocol.writeJSONObjectEnd()
+
+        result_read = {}
+        result_read[u_1] = u_2
+        result_read[u_3] = []
+        result_read[u_3].append(u_4)
+        result_read[u_3].append(u_5)
+        result_read[u_3].append(u_6)
+        result_read[u_3].append(u_7)
+        result_read[u_3].append(u_8)
+        result_read[u_9] = u_10.decode('utf-8')
+        result_read[u_11] = u_12
+
+        self.assertEqual(eval(expected), result_read)
+
 
 if __name__ == '__main__':
     unittest.main()
