【问题标题】:How to parse a json with escaped string into smaller json with node js or python如何使用节点 js 或 python 将带有转义字符串的 json 解析为更小的 json
【发布时间】:2020-09-04 22:01:36
【问题描述】:

我正在使用 AWS 步进函数,想用节点 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 ,解析,取消转义等,不幸的是没有成功:(

提前谢谢你!

【问题讨论】:

  • 嗨!请参阅我们在how to ask a good question? 上的指南。在这个社区中,我们尝试在自己进行研究或尝试不同的解决方案后提出问题。我鼓励您添加您尝试过的任何代码,并就您发现的错误或意外行为提出具体问题。谢谢!!

标签: python node.js json aws-lambda amazon-sqs


【解决方案1】:

这行得通吗?

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'}

【讨论】:

  • 完美运行!你刚刚为我节省了很多尝试和错误!干杯:)
【解决方案2】:

这是我在 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)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 2022-11-03
    • 2016-04-25
    • 1970-01-01
    • 2021-12-02
    • 2022-08-18
    • 1970-01-01
    相关资源
    最近更新 更多