Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript从Gmail API解析JSON?_Javascript_Json_Gmail Api - Fatal编程技术网

如何使用JavaScript从Gmail API解析JSON?

如何使用JavaScript从Gmail API解析JSON?,javascript,json,gmail-api,Javascript,Json,Gmail Api,使用JavaScript,如何从Gmail API的返回中提取日期、收件人、发件人、主题和文本字段(见下文) 它不在通常的名称-值对中,至少不在JSON中。此外,文本需要解码 { "id": "rthrt34t34t45g45g4", "threadId": "gg54tgw4y45t24f3f", "labelIds": [ "SENT" ], "snippet": "Testing 1 2 3", "historyId": "2344", "payload": { "m

使用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
}
{
“id”:“RTHRT34T45G45G4”,
“线程ID”:“gg54tgw4y45t24f3f”,
“labelIds”:[
“已发送”
],
“代码片段”:“测试1 2 3”,
“historyId”:“2344”,
“有效载荷”:{
“mimeType”:“多部分/备选方案”,
“文件名”:“,
“标题”:[
{
“名称”:“MIME版本”,
“值”:“1.0”
},
{
“姓名”:“已收到”,
“价值”:“由101.64.82.199通过HTTP;Wed,2015年2月18日21:34:49-0800(太平洋标准时间)”
},
{
“姓名”:“日期”,
“价值”:“周四,2015年2月19日12:34:49+0700”
},
{
“名称”:“交付至”,
“值”:test@test.org"
},
{
“名称”:“消息ID”,
“值”:”
},
{
“名称”:“主题”,
“值”:“测试123”
},
{
“姓名”:“发件人”,
“值”:“测试”
},
{
“姓名”:“收件人”,
“值”:“测试”。test@test.com"
},
{
“名称”:“内容类型”,
“值”:“多部分/备选方案;边界=egrreg34t34”
}
],
“正文”:{
“大小”:0
},
“部分”:[
{
“partId”:“0”,
“mimeType”:“文本/普通”,
“文件名”:“,
“标题”:[
{
“名称”:“内容类型”,
“值”:“文本/纯文本;字符集=UTF-8”
}
],
“正文”:{
“大小”:8,
“数据”:“MTIzNDU2DQo=”
}
},
{
“partId”:“1”,
“mimeType”:“text/html”,
“文件名”:“,
“标题”:[
{
“名称”:“内容类型”,
“值”:“text/html;charset=UTF-8”
}
],
“正文”:{
“尺寸”:29,
“数据”:“PGRpdiBkaXI9Imx0ciI-MTIzNDU2PC9kaXY-DQo=”
}
}
]
},
“sizeEstimate”:651
}

在网上冲浪时,我发现这是一条通用的GMail信息。您可以使用它来轻松解析JSON(通过使用提供的各种库)。

您可以使用例如
过滤器
函数,如下所示:

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");

这有用吗?

好主意,谢谢!正文解码怎么样?有什么想法吗?可能是@John Mee的重复,不,这个问题是要解析一个JSON字符串。我的问题是,当名称-值对以Gmail提供给我的不方便的方式配对时,如何从中提取值。