如何引用json的属性

时间:2017-07-27 22:50:02

标签: javascript json gmail-api

我在Gmail API中返回了以下结果。我想知道使用JSON对象的最佳方法是什么。

JSON.stringify(response.resultSizeEstimate);

我是JSON对象的新手,但我熟悉PHP对象和数组。我将要引用 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 }); } 并迭代id。

我正在尝试 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对象的正确方向。我似乎无法找到任何标准方式。

ADDED:这是我创建的函数appendpre只是输出到元素...

const Buttons = (props) => {
  const questions = [
    ["56","30","11","20"],
    ["1","-2","2","-1"],
    ["odd","even","none","both"]
  ];

  return (
    <div>
      {questions.map((question, i) => (
        <div key={i}>
          {question.map((answer, n) => (
            <button key={n} onClick={() => alert(answer)}>
              {answer}
            </button>
          ))}
        </div>
      ))}
    </div>
  );
};

ReactDOM.render(
  <Buttons />,
  document.getElementById('app')
);

EDITIED FUNCTION:这是编辑的工作函数供参考......

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>


<div id="app"></div>

3 个答案:

答案 0 :(得分:2)

您应该使用JSON.parse功能。它接受一个json,并返回一个对象。

let json = `
{
  "result": {
    "messages": [
      {"id":"15d862a00074a324","threadId":"15d862a00074a324"},
      {"id":"15d8628752224d1b","threadId":"15d8628752224d1b"},
      {"id":"15d8231cfbca0608","threadId":"15d8231cfbca0608"},
      {"id":"15d812cb47b30f24","threadId":"15d812cb47b30f24"},
      {"id":"15d5e26548a7fe5b","threadId":"15d5e26548a7fe5b"}
    ],
    "resultSizeEstimate": 5
  }
}`;

let obj = JSON.parse(json);
console.log('resultSizeEstimate', obj.result.resultSizeEstimate);
console.log('message ids', obj.result.messages.map(msg => msg.id));

答案 1 :(得分:0)

以“resultSizeEstimate”为例,您必须从“body”属性中读取它。 然后将body的值从string转换为对象。这是代码

var bodyStr=response.body;
var bodyObj=eval(bodyStr);//eval method can convert json str to an json object
var resultSizeEstimateVal=bodyObj.resultSizeEstimate;

我们可以做同样的事情来获得其他属性

答案 2 :(得分:0)

您可以使用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变量。