Преобразовать данные буферизованного файла в объект Json: express-fileupload

1

Я отправляю файл 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"
}
Теги:
file-upload

1 ответ

1
Лучший ответ

Учитывая то, что вы представили в отладке, ваша кодировка не является 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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню