Как анализировать JSON из Gmail API, используя JavaScript?

Используя JavaScript, как извлечь поля Date, To, From, Subject и Text из возврата API Gmail (см. Ниже)?

Это не в обычной паре имя-значение, по крайней мере, не так, как я бы сделал это с 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
}

2 ответа

Вы можете использовать, например, 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");

Это помогает?

Занимаясь серфингом в интернете, я нашел этот класс, который описывает родовое сообщение GMail. Вы можете использовать это, чтобы легко анализировать JSON (используя любую из широкого спектра предоставляемых библиотек).

Другие вопросы по тегам