我在Ubuntu16.04中执行了下面的一段代码,它运行良好,并给出了正确的预期JSON输出。但是相同的代码抛出JSON.decoder.jsondecoderror:Extra data:在Ubuntu19.10和Windows 10中。这里有编码问题吗。我已经尝试过使用JSON.dumps(),但问题仍然存在
import subprocess
import json
global allkeyval
allkeyval={}
cmd = "tshark -V -l -T json"
p = subprocess.Popen(cmd, stdout=subprocess.PIPE,stdin=subprocess.PIPE,universal_newlines=True,shell=True)
json_str = ""
for line in p.stdout:
if line.strip() == '[':
continue
if line.strip() in [',', ']']:
#newJson = json_str.replace('\n', '\r\n')
json_obj = json.loads(json_str.strip())
source_filter = json_obj['_source']['layers']
keyval=source_filter.items()
allkeyval={}
a=unwrap(keyval,{})
json_str = ""
print(a)
else:
json_str += line
p.stdout.close()
p.wait()
def unwrap(keyval,temp):
for key1,value1 in keyval:
if type(value1)== str :
temp[key1]=value1
else:
unwrap(value1.items(),temp)
return(temp)
调试信息: 调试后,我发现ubuntu在每个tshark数据包的末尾为逗号(,)添加了额外的一行。而window只是将(,)附加到}示例:(},)。请查看附加的图像以便更好地理解。由于逗号(,)的原因,JSON解码器抛出错误:JSON结尾的额外数据。在Windows10中,有没有办法在tshark数据包的末尾添加额外的行
目前没有回答
相关问题 更多 >
编程相关推荐