JSONファイルの全データ受信チェック

JSONデータを受け取る際、受信データをできる限り漏れなく受け取り、正しく解釈するためには、何をすべきかを考える。

 

まず大前提として、TCPで送受信する際、データが途中で途切れたりすることは無い。

プロトコル上、基本的に保証されている。)

 

しかし、MTUの制限で中途半端に途切れたデータがくることはあり得る。

◆ MTU(Maximum Transmission Unit)

 MTU とは、一回のデータ転送にて送信可能な [ IPデータグラムの最大値 ] のことです。
 例えば、Ethernet型LANの環境においてはEthernetフレームが最大 1518 byte なので、
 Ethernetヘッダ ( 14byte ) と FCS ( 4byte ) を除く 1500byte がMTUサイズとなります。

 

この場合、JSON.parseをループして監視する方法がある。

(parseが成功するまで受信データをずっとバッファに足していく形)

 

しかし下記場合にもparseエラーになる。

 

①正しいJSONデータが複数入っている


②ゴミデータが混入している(混入部分以外のJSONデータは正しいのに、ゴミデータのせいでエラーになってしまっている)


JSON形式でない完全なゴミデータ(ありえる?

 

これらすべてを考慮した設計・実装が必要。

 

 

結論

基本は、JSON.parseのループで行う。

 

加えて、各エラー時の考慮をどのように入れるかを検討する。

 

以下は検討中。

①正しいJSONデータが複数入っている

・中カッコ{}、大かっこ[]の個数を数える


②ゴミデータが混入している(混入部分以外のJSONデータは正しいのに、ゴミデータのせいでエラーになってしまっている)

 

JSON形式でない完全なゴミデータ(ありえる?