如何用Node.js或Python解析带转义字符串的JSON为更小的JSON
我正在使用AWS的步骤函数,想用Node.js或Python的Lambda函数来解析下面的JSON(语言无所谓,我只需要结果):
{
"stage": "dev",
"server": {
"instanceId": "i-xxxx",
"status": "running"
},
"message": [
{
"MessageId": "xxx",
"ReceiptHandle": "xxx",
"MD5OfBody": "xxx",
"Body": "{\n \"stage\": \"DEV\",\n \"id\": \"5\",\n \"results\": \"D:\\\\Temp\\\\results\"\n}",
"Attributes": {
"SenderId": "xxxx",
"ApproximateFirstReceiveTimestamp": "xxx",
"ApproximateReceiveCount": "1",
"SentTimestamp": "xxx",
"SequenceNumber": "xxx",
"MessageDeduplicationId": "20",
"MessageGroupId": "20"
}
}
]
}
我只需要“message.Body”这一部分。我想把它分成三个变量,以便进行后续操作:
{
"stage":"DEV",
"id":"5",
"results":"D:\\Temp\\results"
}
有人能帮我吗?我刚花了一个小时在JSON.stringify、解析、解码等等上,但不幸的是没有成功 :(
提前谢谢大家!
相关问题:
- 暂无相关问题
2 个回答
0
这是我在Python中实现它的方法,
import json
dic = {
"stage": "dev",
"server": {
"instanceId": "i-xxxx",
"status": "running"
},
"message": [
{
"MessageId": "xxx",
"ReceiptHandle": "xxx",
"MD5OfBody": "xxx",
"Body": "{\n \"stage\": \"DEV\",\n \"id\": \"5\",\n \"results\": \"D:\\\\Temp\\\\results\"\n}",
"Attributes": {
"SenderId": "xxxx",
"ApproximateFirstReceiveTimestamp": "xxx",
"ApproximateReceiveCount": "1",
"SentTimestamp": "xxx",
"SequenceNumber": "xxx",
"MessageDeduplicationId": "20",
"MessageGroupId": "20"
}
}
]
}
message_body_str = dic['message'][0]['Body']
print(json.dumps(json.loads(message_body_str)))
0
这个有效吗?
import json
jsondata = {
"stage": "dev",
"server": {
"instanceId": "i-xxxx",
"status": "running"
},
"message": [
{
"MessageId": "xxx",
"ReceiptHandle": "xxx",
"MD5OfBody": "xxx",
"Body": "{\n \"stage\": \"DEV\",\n \"id\": \"5\",\n \"results\": \"D:\\\\Temp\\\\results\"\n}",
"Attributes": {
"SenderId": "xxxx",
"ApproximateFirstReceiveTimestamp": "xxx",
"ApproximateReceiveCount": "1",
"SentTimestamp": "xxx",
"SequenceNumber": "xxx",
"MessageDeduplicationId": "20",
"MessageGroupId": "20"
}
}
]
}
jsonbody = json.loads(jsondata.get('message')[0].get('Body'))
print(jsonbody)
# {'stage': 'DEV', 'id': '5', 'results': 'D:\\Temp\\results'}