【问题标题】:How to parse JSON from Gmail API using JavaScript?如何使用 JavaScript 从 Gmail API 解析 JSON?
【发布时间】:2015-04-20 09:45:48
【问题描述】:

使用 JavaScript,我如何从 Gmail API 的返回中提取日期、收件人、发件人、主题和文本字段(见下文)?

它不在通常的名称-值对中,至少不是我使用 JSON 的方式。另外,文本需要解码。

{
 "id": "rthrt34t34t45g45g4",
 "threadId": "gg54tgw4y45t24f3f",
 "labelIds": [
  "SENT"
 ],
 "snippet": "Testing 1 2 3",
 "historyId": "2344",
 "payload": {
  "mimeType": "multipart/alternative",
  "filename": "",
  "headers": [
   {
    "name": "MIME-Version",
    "value": "1.0"
   },
   {
    "name": "Received",
    "value": "by 101.64.82.199 with HTTP; Wed, 18 Feb 2015 21:34:49 -0800 (PST)"
   },
   {
    "name": "Date",
    "value": "Thu, 19 Feb 2015 12:34:49 +0700"
   },
   {
    "name": "Delivered-To",
    "value": "test@test.org"
   },
   {
    "name": "Message-ID",
    "value": "<retert-_RKS0Vc-U6-V8dSma5=ertertertertf2e@mail.gmail.com>"
   },
   {
    "name": "Subject",
    "value": "testing 123"
   },
   {
    "name": "From",
    "value": "A Test <test@test.org>"
   },
   {
    "name": "To",
    "value": "test.test@test.com"
   },
   {
    "name": "Content-Type",
    "value": "multipart/alternative; boundary=egrreg34t34"
   }
  ],
  "body": {
   "size": 0
  },
  "parts": [
   {
    "partId": "0",
    "mimeType": "text/plain",
    "filename": "",
    "headers": [
     {
      "name": "Content-Type",
      "value": "text/plain; charset=UTF-8"
     }
    ],
    "body": {
     "size": 8,
     "data": "MTIzNDU2DQo="
    }
   },
   {
    "partId": "1",
    "mimeType": "text/html",
    "filename": "",
    "headers": [
     {
      "name": "Content-Type",
      "value": "text/html; charset=UTF-8"
     }
    ],
    "body": {
     "size": 29,
     "data": "PGRpdiBkaXI9Imx0ciI-MTIzNDU2PC9kaXY-DQo="
    }
   }
  ]
 },
 "sizeEstimate": 651
}

【问题讨论】:

  • Parse JSON in JavaScript? 的可能重复项
  • @John Mee,不,这个问题要求解析 JSON 字符串。我的问题是询问如何从名称-值对中提取值,当它们以 Gmail 提供给我的不方便方式配对时。

标签: javascript json gmail-api


【解决方案1】:

你可以使用例如filter函数如下:

var extractField = function(json, fieldName) {
  return json.payload.headers.filter(function(header) {
    return header.name === fieldName;
  })[0];
};
var date = extractField(response, "Date");
var subject = extractField(response, "Subject");

这有帮助吗?

【讨论】:

  • 这是个好主意,谢谢!正文解码怎么样——有什么想法吗?
【解决方案2】:

在 Internet 上冲浪我发现了这个 class,它描述了一个通用 GMail 消息。您可以使用它来轻松解析 JSON(通过使用任何广泛提供的库)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-19
    • 2017-03-07
    • 2014-09-04
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多