JSONata - преобразование JSON в JSON в API Nodejs

Мне нужно написать REST API в Node jS для преобразования JSON в JSON.

Есть много библиотек, и я сортирую в списке "JSONata"

Вы можете найти простой пример JSONata здесь

Проблема заключается в том, что API получает JSON, в котором есть данные и карта, но для JSONata требуется значение карты без кавычек.

{ "data" : { "title" : "title1", "description": "description1", "blog": "This is a blog.", "date": "11/4/2013" }, "map" : { "name": "title", "info": "description", "data" : { "text": "blog", "date": "date" } } } , но объект карты, ожидаемый JSONata, выглядит так, как показано ниже.

{
  "name": title,
  "info": description,
  "some" : {
 "text": blog,
  "date": date
  }

}

Приведенный выше ключ JSON находится в кавычках, а значение без кавычек.

Найдите код API NodeJS.

app.post('/JSONTransform', function(req, res, next) 
{
const data = req.body.data;
const map = req.body.map;
var expression = jsonata(map);
var result = expression.evaluate(data);
res.send(result);
});

Я могу написать простую функцию для удаления кавычек, но приведенная выше карта является простым примером. Это может быть любой дочерний объект, а также может иметь в значении какой-либо специальный символ, включая кавычки.

Я предпочитаю какую-нибудь библиотеку npm или стандартный способ удаления кавычек или настройки JSONata для приема кавычек по значению.

Признательны, если вы предложите какую-либо другую библиотеку или вариант.

Этот API-интерфейс Node JS вызывается из веб-API ASP.NET Core. Веб-API ASP.NET Core получает данные и карту из базы данных и передает их как один JSON в Node JS API.

Пожалуйста, предложите решение этой проблемы или лучшую альтернативу.

Спасибо

Радж


person user3497702    schedule 23.08.2019    source источник


Ответы (1)


Я нашел решение этой проблемы.

Передайте единственный JSON, содержащий и данные, и карту. Поскольку MAP недействителен JSON, я сделал всю карту как строку и экранировал двойные кавычки, которые находятся внутри строки.

Пожалуйста, найдите образец.

{
  "map": "{   \"name\": title,   \"info\": description,   \"data\": {      \"text\": blog,      \"date\": date    }}",
  "data": {
    "title": "title1",
    "description": "description1",
    "blog": "This is a blog.",
    "date": "11/4/2013"
  }
}
person user3497702    schedule 29.08.2019