在Google脚本中解析JSON

时间:2018-04-18 00:12:17

标签: json google-apps-script

我正在尝试解析Google Scripts中的JSON对象,但我似乎无法让它工作。

我试图解析的JSON看起来像这样

{  
 "keywords":[  
  {  
     "c":0.015165274822976534,
     "monthly":[  ],
     "kw":"handstand",
     "n":60500,
     "sb":0.3
  }
  ],
  "not_found":[  

]
 }

我似乎无法访问对象中的任何值。如果我使用JSON.parse(),它似乎会创建一个非JSON对象。

  var response =  '{"keywords":[{"c":0.015165274822976534,"monthly":[  
  ],"kw":"handstand","n":60500,"sb":0.3}],"not_found":[]}'

  var obj = JSON.parse(response);
  Logger.log(obj);

返回

{keywords=[{c=0.015165274822976534, monthly=[], kw=handstand, n=60500, sb=0.3}], not_found=[]}

这不会验证。

如果我尝试使用它,无论如何都会发生这种情况

  var response =  '{"keywords":[{"c":0.015165274822976534,"monthly":[  
  ],"kw":"handstand","n":60500,"sb":0.3}],"not_found":[]}'

  var obj = JSON.parse(response);
  Logger.log(obj.keywords.n)

返回undefined

如果我不使用JSON.parse并且只使用原始response对象,我会收到以下内容:

  var response =  '{"keywords":[{"c":0.015165274822976534,"monthly":[  ],"kw":"handstand","n":60500,"sb":0.3}],"not_found":[]}'

  Logger.log(response.keywords);

我得到undefined

我不确定我在哪里错了。任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

作为@Tanaike mentions,您的n属性是keywords数组中对象的属性。因此,要记录n的值,您需要 - 在将字符串解析为JSON之后 - 评估keywords中的每个对象:



var response =  '{"keywords":[{"c": 0.015165274822976534, "monthly": [ ], "kw": "handstand", "n": 60500, "sb": 0.3}], "not_found": []}'

var obj = JSON.parse(response);
// Log all values of n for each keyword:
obj.keywords.forEach(function (keyword) {
  console.log("Word: " + keyword.kw + ", times used: " + keyword.n);
});