Javascript 如何引用json的属性
Gmail API返回了以下结果。我想知道使用JSON对象的最佳方式是什么Javascript 如何引用json的属性,javascript,json,gmail-api,Javascript,Json,Gmail Api,Gmail API返回了以下结果。我想知道使用JSON对象的最佳方式是什么 {"result":{"messages":[{"id":"15d862a00074a324","threadId":"15d862a00074a324"},{"id":"15d8628752224d1b","threadId":"15d8628752224d1b"},{"id":"15d8231cfbca0608","threadId":"15d8231cfbca0608"},{"id":"15d812cb47b30f
{"result":{"messages":[{"id":"15d862a00074a324","threadId":"15d862a00074a324"},{"id":"15d8628752224d1b","threadId":"15d8628752224d1b"},{"id":"15d8231cfbca0608","threadId":"15d8231cfbca0608"},{"id":"15d812cb47b30f24","threadId":"15d812cb47b30f24"},{"id":"15d5e26548a7fe5b","threadId":"15d5e26548a7fe5b"}],"resultSizeEstimate":5},"body":"{\n \"messages\": [\n {\n \"id\": \"15d862a00074a324\",\n \"threadId\": \"15d862a00074a324\"\n },\n {\n \"id\": \"15d8628752224d1b\",\n \"threadId\": \"15d8628752224d1b\"\n },\n {\n \"id\": \"15d8231cfbca0608\",\n \"threadId\": \"15d8231cfbca0608\"\n },\n {\n \"id\": \"15d812cb47b30f24\",\n \"threadId\": \"15d812cb47b30f24\"\n },\n {\n \"id\": \"15d5e26548a7fe5b\",\n \"threadId\": \"15d5e26548a7fe5b\"\n }\n ],\n \"resultSizeEstimate\": 5\n}\n"}
我不熟悉JSON对象,但熟悉PHP对象和数组。我希望引用resultSizeEstimate
并迭代id
我正在尝试JSON.stringify(response.resultSizeEstimate)代码>但是没有运气。有人能为我指出使用JSON对象的正确方向吗。我似乎找不到任何标准的方法
添加:这是我正在创建的函数,只是将输出添加到元素
function getUnread() {
gapi.client.gmail.users.messages.list({
'userId': 'me',
'q': 'is:unread in:inbox',
}).then(function(response) {
var unread = response;
appendPre(JSON.stringify(response)); // Outputs JSON with string chars \n's
console.log(JSON.parse(response)); // Errors as invalid JSON
});
}
编辑功能:这里是编辑后的工作功能供参考
function getUnread() {
gapi.client.gmail.users.messages.list({
'userId': 'me',
'q': 'is:unread in:inbox',
}).then(function(response) {
var unread = JSON.parse(JSON.stringify( response ));
appendPre(unread.result.resultSizeEstimate);
});
}
您应该使用JSON.parse
函数。它接受一个json,并返回一个对象
let json=`
{
“结果”:{
“信息”:[
{“id”:“15D862A000074A324”,“threadId”:“15D862A000074A324”},
{“id”:“15d8628752224d1b”,“threadId”:“15d8628752224d1b”},
{“id”:“15d8231cfbca0608”,“threadId”:“15d8231cfbca0608”},
{“id”:“15d812cb47b30f24”,“threadId”:“15d812cb47b30f24”},
{“id”:“15d5e26548a7fe5b”,“threadId”:“15d5e26548a7fe5b”}
],
“resultSizeEstimate”:5
}
}`;
让obj=JSON.parse(JSON);
log('resultSizeEstimate',obj.result.resultSizeEstimate);
log('messageid',obj.result.messages.map(msg=>msg.id))
您应该使用JSON.parse
函数。它接受一个json,并返回一个对象
let json=`
{
“结果”:{
“信息”:[
{“id”:“15D862A000074A324”,“threadId”:“15D862A000074A324”},
{“id”:“15d8628752224d1b”,“threadId”:“15d8628752224d1b”},
{“id”:“15d8231cfbca0608”,“threadId”:“15d8231cfbca0608”},
{“id”:“15d812cb47b30f24”,“threadId”:“15d812cb47b30f24”},
{“id”:“15d5e26548a7fe5b”,“threadId”:“15d5e26548a7fe5b”}
],
“resultSizeEstimate”:5
}
}`;
让obj=JSON.parse(JSON);
log('resultSizeEstimate',obj.result.resultSizeEstimate);
log('messageid',obj.result.messages.map(msg=>msg.id))代码>以“resultSizeEstimate”为例,您必须从“body”属性中读取它。
然后将body的值从字符串转换为对象。这是密码
var bodyStr=response.body;
var bodyObj=eval(bodyStr);//eval method can convert json str to an json object
var resultSizeEstimateVal=bodyObj.resultSizeEstimate;
我们可以做同样的事情来获取其他属性以“resultSizeEstimate”为例,您必须从“body”属性中读取它。
然后将body的值从字符串转换为对象。这是密码
var bodyStr=response.body;
var bodyObj=eval(bodyStr);//eval method can convert json str to an json object
var resultSizeEstimateVal=bodyObj.resultSizeEstimate;
我们可以做同样的事情来获取其他属性您可以使用PHP json_decode函数来实现这一点
$json_data = '{"result":{"messages":[{"id":"15d862a00074a324","threadId":"15d862a00074a324"},{"id":"15d8628752224d1b","threadId":"15d8628752224d1b"},{"id":"15d8231cfbca0608","threadId":"15d8231cfbca0608"},{"id":"15d812cb47b30f24","threadId":"15d812cb47b30f24"},{"id":"15d5e26548a7fe5b","threadId":"15d5e26548a7fe5b"}],"resultSizeEstimate":5},"body":"{\n \"messages\": [\n {\n \"id\": \"15d862a00074a324\",\n \"threadId\": \"15d862a00074a324\"\n },\n {\n \"id\": \"15d8628752224d1b\",\n \"threadId\": \"15d8628752224d1b\"\n },\n {\n \"id\": \"15d8231cfbca0608\",\n \"threadId\": \"15d8231cfbca0608\"\n },\n {\n \"id\": \"15d812cb47b30f24\",\n \"threadId\": \"15d812cb47b30f24\"\n },\n {\n \"id\": \"15d5e26548a7fe5b\",\n \"threadId\": \"15d5e26548a7fe5b\"\n }\n ],\n \"resultSizeEstimate\": 5\n}\n"};
$data = json_decode($json_data);
echo $data->resultSizeEstimate;
json_decode的作用是,它将获取json字符串,然后将其转换为PHP变量。您可以使用PHP json_decode函数来实现这一点
$json_data = '{"result":{"messages":[{"id":"15d862a00074a324","threadId":"15d862a00074a324"},{"id":"15d8628752224d1b","threadId":"15d8628752224d1b"},{"id":"15d8231cfbca0608","threadId":"15d8231cfbca0608"},{"id":"15d812cb47b30f24","threadId":"15d812cb47b30f24"},{"id":"15d5e26548a7fe5b","threadId":"15d5e26548a7fe5b"}],"resultSizeEstimate":5},"body":"{\n \"messages\": [\n {\n \"id\": \"15d862a00074a324\",\n \"threadId\": \"15d862a00074a324\"\n },\n {\n \"id\": \"15d8628752224d1b\",\n \"threadId\": \"15d8628752224d1b\"\n },\n {\n \"id\": \"15d8231cfbca0608\",\n \"threadId\": \"15d8231cfbca0608\"\n },\n {\n \"id\": \"15d812cb47b30f24\",\n \"threadId\": \"15d812cb47b30f24\"\n },\n {\n \"id\": \"15d5e26548a7fe5b\",\n \"threadId\": \"15d5e26548a7fe5b\"\n }\n ],\n \"resultSizeEstimate\": 5\n}\n"};
$data = json_decode($json_data);
echo $data->resultSizeEstimate;
json_decode的作用是,它将获取json字符串,然后将其转换为PHP变量。json.parse为我提供了未捕获的语法错误:json中位置1处的意外标记o。。。一个快速的google告诉我,我已经在使用一个json对象。是的,因为你的json字符串包含无效字符,例如\n
。我已经减少了json字符串,所以现在json.parse可以解析它。感谢你的帮助,但我仍然想知道如何引用输出的属性。JSON.parse的result.messages.id和result.resultSizeEstimate.result是一个对象,因此您可以直接使用它的属性:obj.result.resultSizeEstimate
。要获取消息的id
,请使用本机数组方法map
。JSON.parse为我提供了未捕获的语法错误:JSON中位置1处的意外标记o。。。一个快速的google告诉我,我已经在使用一个json对象。是的,因为你的json字符串包含无效字符,例如\n
。我已经减少了json字符串,所以现在json.parse可以解析它。感谢你的帮助,但我仍然想知道如何引用输出的属性。JSON.parse的result.messages.id和result.resultSizeEstimate.result是一个对象,因此您可以直接使用它的属性:obj.result.resultSizeEstimate
。要获取消息的id
,请使用本机数组方法map
。