【发布时间】:2016-10-01 17:13:30
【问题描述】:
我的应用程序调用该模块来解析嵌套的 JSON 对象,以读取 2 个键的值。
parseData(str, function (error, str) {
if (err) {
console.log("Error - parseData : ", err);
} else {
console.log(str);
}
而parseData模块如下
function parseData(str, callback) {
function recursiveFunction(obj) {
var keysArray = Object.keys(obj);
for (var i = 0; i < keysArray.length; i++) {
var key = keysArray[i];
var value = obj[key];
if (value === Object(value)) {
parseData(value);
} else {
if (key == 'title') {
title = value;
}
if (key == 'extract') {
var extract = value.replace(/(\r\n|\n|\r)/gm," ");
callback(null, JSON.stringify('{"title":'+ title + ', "text":' + extract));
}
}
}
}
recursiveFunction(str);
}
但它显示以下错误
/modules/parseData.js:22
callback(null, JSON.stringify('{"title":'+ title + ', "text":' + extract));
^
TypeError: callback is not a function
为什么回调失败?如何返回 JSON 对象?
编辑
代码中存在一些错误,现已更正。
function parseData(str, callback) {
function recursiveFunction(obj) {
var keysArray = Object.keys(obj);
for (var i = 0; i < keysArray.length; i++) {
var key = keysArray[i];
var value = obj[key];
if (value === Object(value)) {
recursiveFunction(value);
} else {
if (key == 'title') {
title = value;
}
if (key == 'extract') {
var extract = value.replace(/(\r\n|\n|\r)/gm," ");
callback(null, JSON.stringify('{"title":'+ title + ', "text":' + extract));
}
}
}
}
recursiveFunction(str);
};
【问题讨论】:
-
您的第一个代码块缺少
}和);这是错误发布还是您的程序有语法错误? -
递归调用函数时添加
callback作为参数 -
callback(null, JSON.stringify('{"title":'+ title + ', "text":' + extract));看起来很不对劲。如果你想创建正确的 JSON,你应该将一个对象传递给JSON.stringify:callback(null, JSON.stringify({title: title, text: extract}));。但是您确定要 JSON 而不是对象吗? -
@Jacob,我一定是在复制代码时出了点问题
-
@FelixKling,我们可以返回一个对象,但是 API 用 JSON 响应调用请求。传递 JSON 可以吗?
标签: javascript json node.js callback