を使用pyshark
していて、印刷しようとしていJSON
ます。これは私のコードです:
import pyshark
import json
capture = pyshark.LiveCapture(interface='eth0', bpf_filter='http', use_json=True)
for packet in capture.sniff_continuously(packet_count=10):
print(json.loads(str(packet)))
しかし、私はエラーが発生しています:
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
また、単に実行print(packet)
しているときはそうではありませんJSON
。
アップデート
私はこれで試しました:
cmd = 'tshark -i en0 -f http -T json -x -l --no-duplicate-keys'
args = shlex.split(cmd)
tshark = subprocess.Popen(args, stdout=subprocess.PIPE)
for line in io.TextIOWrapper(tshark.stdout, encoding="utf-8"):
print("test: %s" % line.rstrip())
しかし、それはJSON
、1 つの結合されたオブジェクトではなく、オブジェクトのすべての行を出力します。パイプが原因だと思います。これを変更して、JSON
パケットごとに実際のオブジェクトを取得できますか?