如何用Node.js或Python解析带转义字符串的JSON为更小的JSON

0 投票
2 回答
589 浏览
提问于 2025-06-18 04:12

我正在使用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'}

撰写回答