在NodeJS中检索POST的响应

时间:2018-07-18 21:15:42

标签: json node.js

我收到来自服务的以下回复

[ { recipient_id: 'default',
    text: 'Hello, how can I help?' } ]

我需要检索响应的text部分。我可以像下面这样用python

json_response = response.json()
reply = json_response[0]['text']

但是我现在需要为另一个项目在NodeJS中检索text部分。所以我尝试了下面的代码,但它输出undefined

var obj = JSON.parse(response)
console.log(obj[0]['text'])

有人可以建议吗?

编辑:

发出POST请求的方式是

request.post(
                  'http://path-to-service',
                  { json: { 'query': msg} },
                  function (error, response, body) {
                      if (!error && response.statusCode == 200) {
                          console.log(body)
                          var obj = JSON.parse(body)
                          console.log(obj[0]['text'])

                      }

问题是服务将响应作为python字典数组返回。因此response[0]本质上是python字典

{ recipient_id: 'default',
  text: 'Hello, how can I help?' } 

问题是,如何从此字典中检索键text的值。

2 个答案:

答案 0 :(得分:1)

我认为您的响应已经作为JSON对象出现,因此无需再次解析。

var obj =  [ { recipient_id: 'default',
    text: 'Hello, how can I help?' } ];
    
 console.log(obj[0].text);   

答案 1 :(得分:0)

尝试代码

const round = v => Math.round(v);

const clamp = v => v < 1.3 ? 1.3 : v;

const getScore = iteration => factor =>
    iteration < 2 ? 1 :
    iteration === 2 ? 6 :
    (getScore(iteration - 1)(factor) * factor);

const compose = (fn, ...transformArgsFns) => (...args) => {
  const newArgs = transformArgsFns.map((tranformArgFn, i) => tranformArgFn(args[i]));
  return fn(...newArgs);
}

const getRoundedClampedScore = compose(getScore, round, clamp);

console.log(getRoundedClampedScore(1)(5))
console.log(getRoundedClampedScore(3.3)(5))
console.log(getRoundedClampedScore(3.3)(1))

printf

var body = {'query': 'msg', 'name': 'my name is nodejs'}
var obj = JSON.parse(body);
console.log(obj.query);
console.log(obj.name);