【问题标题】:JSON.parse(stdout) of curl in hubot coffeescript giving undefinedhubot coffeescript中curl的JSON.parse(stdout)给出未定义
【发布时间】:2017-08-14 00:17:32
【问题描述】:

对coffeescript 非常陌生,我正在使用ServiceNow 的API 来获取信息并将其返回到聊天中。我正在努力解析 JSON 响应,因为它返回未定义,不确定发生了什么:

snurl = '"https://companyname.service-now.com/api/now/table/incident?sysparm_query=number%3D' + snincmagic + '&sysparm_fields=number%2Csys_id&sysparm_limit=10"'
snpayload = '--request GET -H "Content-Type: application/json" --header "Accept: application/json" ' + " --user 'username':'password'"
tixcurlhack = require "child_process"
tixcurlhack.exec "/usr/bin/curl #{snpayload} #{snurl}", (error, stdout, stderr) ->
  if error
    msg.send "Error: #{error.code} - #{stderr}"
  else
    jsonresponsedata = JSON.parse(stdout)
    incidentnumber = jsonresponsedata.result.number
    incidentsysid = jsonresponsedata.result.sys_id

但即使 stdout 包含 JSON,incidentsysid 仍以未定义的形式返回:

      msg.send "stdout is: " + stdout
      msg.send "jsonresponsedata is: " + jsonresponsedata
      msg.send "incidentsysid is: " + incidentsysid

> incidentsysid is: undefined.
> jsonresponsedata is: [object Object]
> stdout is: {"result":[{"number":"INC0010689","sys_id":"acb09c8fdb65324063447aecbf96192a"}]}

我应该在这里做些什么来将 result.number 和 result.sys_id 放入它们的变量中吗?

【问题讨论】:

    标签: json curl coffeescript servicenow hubot


    【解决方案1】:

    看起来 JSON 解析正常,但您错误地访问它:

    > stdout is: {"result":[{"number":"INC0010689","sys_id":"acb09c8fdb65324063447aecbf96192a"}]}
    

    将被解析为:

    jsonresponsedata = {
      result: [
        {
           number: "INC0010689",
           sys_id: "acb09c8fdb65324063447aecbf96192a"
        }
      ]
    }
    

    所以要访问您应该使用的号码和 sys_id:

     incidentnumber = jsonresponsedata.result[0].number
     incidentsysid = jsonresponsedata.result[0].sys_id
    

    【讨论】:

    • 这正是我们所需要的,谢谢!我刚刚了解了更多关于语法的知识;我解析的最后一个 json 没有方括号,所以它不包含数组。这需要通过数组索引访问... 方括号保存数组
    猜你喜欢
    • 1970-01-01
    • 2015-04-28
    • 2018-05-20
    • 2012-04-13
    • 1970-01-01
    • 2013-05-02
    • 2023-03-29
    • 2013-02-18
    • 1970-01-01
    相关资源
    最近更新 更多