diff --git a/QMP/qmp.py b/QMP/qmp.py
index 36ecc1d..464a01a 100644
--- a/QMP/qmp.py
+++ b/QMP/qmp.py
@@ -61,10 +61,18 @@ class QEMUMonitorProtocol:
 
     def __json_read(self, only_event=False):
         while True:
-            data = self.__sockfile.readline()
-            if not data:
-                return
-            resp = json.loads(data)
+            data = ""
+            while True:
+                moredata = self.__sockfile.readline()
+                if not moredata:
+                    return
+                data = data + moredata
+                try:
+                    resp = json.loads(data)
+                    break
+                except ValueError:
+                    pass
+
             if 'event' in resp:
                 self.__events.append(resp)
                 if not only_event:
