我将以下数据作为参数提供给我的python脚本:
undefined
剧本:
source=Blabla||
name=TEST Error in Log - Error: 3345||
item_value={ "Error": 3345, "Message": "Some error occurred", "Status": 1 }
它提供以下输出:
#!/usr/bin/env python
import sys, json
data=sys.argv[3]
if 'NOTE: Escalation cancelled' in data:
exit(0)
data=data.split('||')
datadictionary = {}
for item in data:
key, val = item.split("=", 1)
k=key.strip()
v=(((((val.strip())).replace('\n',"<br>")).replace("`", "&lsquo")))
datadictionary[ k ] = v
datajson = json.dumps(datadictionary)
datajson=datajson.encode('utf8')
print(datajson)
这不是一个合适的JSON,因为item_value是一个字符串而不是一个JSON对象。如何在这里生成嵌套的JSON?
答案 0 :(得分:0)
我发现我需要首先通过以下行解码JSON对象:
datadictionary['item_value']=json.loads(datadictionary['item_value'])
所以脚本看起来像这样:
#!/usr/bin/env python
import sys, json
data=sys.argv[3]
if 'NOTE: Escalation cancelled' in data:
exit(0)
data=data.split('||')
datadictionary = {}
for item in data:
key, val = item.split("=", 1)
k=key.strip()
v=val.strip().replace('\n',"<br>").replace("`", "&lsquo")
datadictionary[ k ] = v
datadictionary['item_value']=json.loads(datadictionary['item_value'])
datajson = json.dumps(datadictionary)
datajson=datajson.encode('utf8')
print(datajson)
输出:
{"source": "Blabla", "name": "TEST Error in Log - Error: 3345", "item_value": {"Status": 1, "Message": "Some error occurred", "Error": 3345}}