2016-01-03 45 views
0

我有JSON消息(JSON哈希表)表示爲通過websocket進入的字符串。從套接字讀取的每個字節可能會返回一個不以消息邊界結束的字符串。在Python中解析JSON消息的最簡單方法是什麼?我怎麼找到消息在字符串中的位置,而無需自己編寫解析器(或者大括號/字符匹配器)?如何從Python中的websocket消息逐步解析JSON?

其他語言是否提供工具使其更容易?

+0

你可以使用'try .. except ..'解析合併的字符串,直到解析成功的JSON對象 – Fabricator

+0

請提供一些您想要閱讀的json格式。 – GrvTyagi

回答

0

從套接字讀取的每個字節可能會返回一個不以消息邊界結束的字符串。

這是不正確的 - Websockets是面向消息的協議,而不是傳統的面向流的TCP套接字協議,您需要擔心和處理消息塊。

它建立在TCP之上,但是它在將應用程序層(您的代碼)交付之前自動處理將各個碎片拼接成one complete message

因此,websockets像UDP那樣是面向消息的,沒有最大長度約束,但具有TCP的傳遞保證和擁塞控制。事實證明,TCP的流方向並不是那麼有用(想想有多少協議在TCP之上構建某種「消息」概念)。事實上,SCTP(RFC 4960)提供了許多與TCP相同的好處,但是移除了TCP部分以減少開銷。不幸的是,SCTP尚未得到廣泛採用。

同樣來自official RFC

層對TCP之上的框架機制,要回了TCP是建立在IP數據包的機制,但沒有長度的限制