Я отправляю файл JSON по http. Файл доступен на req.files
с использованием промежуточного программного обеспечения express-fileupload. Я получаю файл в виде буферизованных данных. Я хочу преобразовать файл в объект JSON.
app.post('/start', function(req, res){
if(!req.files.seed)
res.status(400).send("Please upload the seed file");
var file = req.files.seed;
var obj = //Convert the file to JSON object and send it to create instance;
instance.createInstance(obj);
res.status(200).send("Started....");
});
При печати файл выглядит как что-то такое
{ name: 'seed.json',
data: <Buffer 7b 0d 0a 09 22 61 72 72 61 79 22 3a 20 5b 20 31 2c 20 31 20 5d 2 c 0d 0a 09 22 72 65 63 75 72 72 65 6e 63 65 22 3a 20 7b 0d 0a 09 09 22 73 65 63 6f 6e ... >,
encoding: '7bit',
mimetype: 'application/json',
mv: [Function: mv] }
Я попытался использовать JSON.parse(file)
но SyntaxError: появляется неожиданная ошибка в JSON в позиции 1.
Я также попытался использовать преобразование его в строку, используя
var text = file.toString(file,'utf8')
var obj = JSON.parse(text)
но это тоже не работает. Свойства этих объектов при доступе не определены.
Структура файла JSON.
{
"array": [ 1, 1 ],
"recurrence": {
"second": 50,
"minute": null,
"hour": null,
"dayOfweek": null
},
"campaign": {
"sender": "StartUp India Yatra",
"email": "[email protected]",
"subject": "{Invitation} StartUp India Yatra Chapter",
"title": "StartUp India Yatra Campaign"
},
"condition": {
"open": {
"greaterThanEqual": 1,
"lessThan": 2
},
"campaignSummary": null
},
"textPath": "../template.txt",
"htmlPath": "../template.html",
"path": "../emailer/index.js"
"retailerId": "4"
}
Учитывая то, что вы представили в отладке, ваша кодировка не является utf8
а 7bit
. Поэтому для правильного декодирования вам нужно немного изменить свой код.
var file = req.files.seed;
var obj = JSON.parse(file.data.toString('ascii'));
// ... do your creation logic
В любом случае вы можете играть с utf8
, ascii
econdings, чтобы увидеть, нет JSON.parse
проблем JSON.parse
.