Мое приложение вызывает модуль для разбора вложенного объекта JSON, чтобы считывать значения из 2-х ключей.Застревание между вложенным объектом JSON и обратным вызовом в Nodejs
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?
EDIT
Были некоторые ошибки в коде и теперь исправлена.
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);
};
В вашем первом блоке кода отсутствуют '}' и ')'; является ли неправильная запись или ваша программа имеет синтаксическую ошибку? – Jacob
добавить 'callback' в качестве параметра, когда вы вызываете функцию рекурсивно –
' callback (null, JSON.stringify ('{"title":' + title + ', "text":' + extract)); 'выглядит очень неправильно , Если вы хотите создать правильный JSON, вы должны передать объект 'JSON.stringify':' callback (null, JSON.stringify ({title: title, text: extract})); '. Но вы уверены, что хотите JSON вместо объекта? –