Logic App JSON composition преобразовал значение JSON в строку

#azure-functions #azure-logic-apps

#azure-функции #azure-logic-apps

Вопрос:

Я создаю логическое приложение, в котором я использую функцию azure для возврата json обратно. Затем мне нужно составить JSON с возвращаемым значением плюс другие свойства, которые в конечном итоге я сохраню в CosmosDB. Однако я правильно получаю ответ от функции в виде массива, когда я составляю тот, который преобразуется в строку после композиции. Из-за этого он хранится в виде строки в БД, а не в документе. Ценю вашу поддержку.
Текущий вывод { «id»: «D», «studydate»: «DD», «studydescription»: «DD», «studyname»: «D», «/csdm/table1.csv»: «[{«No»:»1″, «Name»:»Ananda»,»Date»:»Krishna»,»Descriptionr»:»1111r»},{«No»:»2″,»Name»:»Test2″,»Date»:»Test2″,»Descriptionr»:»2222r»},{«No»: «3»,»Name»:»Test3″,»Date»:»Test3″,»Description r»:»3333″}]» } введите описание изображения здесь

Ожидаемый результат

«id»: «D», «studydate»: «DD», «studydescription»: «DD», «studyname»: «D», «/csdm/table1.csv»:[ { «No»: «1», «Name»: «Ananda», «Дата»: «Кришна», «Описание r»: «1111 r» }, { «Нет»: «2», «Имя»: «Тест2», «Дата»: «Тест2», «Описание r»: «2222 r» }

Ниже приведен код функции Azure:

 module.exports = async function (context, req) {

context.log('JavaScript HTTP trigger function processed a request.');
const filecontents = req.body
const filename= req.query.filename
context.log(req.body)
const splitfilecontents = filecontents.split("n")
const splitheader = splitfilecontents[0].split(",")
const totalrows = splitfilecontents.length
context.log(splitfilecontents)
let ret=[]
let data=[]

header=[]

itemjson= []
finaljson={}

context.log("header" splitfilecontents[0])
context.log("header Length" splitfilecontents[0].length)
const headerrow= splitfilecontents[0].split(",")
context.log("Headers Total" headerrow)
 for (let i=1, len=splitfilecontents.length; i<len;i  )
 {
    data = splitfilecontents[i].split(",")
    context.log("Row Data" data)
    item = {}
    for (let j=0,len2=headerrow.length;j<len2;j  )
     {
        
        item[headerrow[j]] = data[j]
        context.log("row" i "column" j "Data" item[headerrow[j]])
        
     }
     itemjson.push(item)
     context.log("item" i "Data" item[headerrow[0]])
 }
finaljson=JSON.stringify(itemjson)
finaljson2=JSON.stringify(finaljson)
finaljson3=JSON.stringify(finaljson2)
context.log(finaljson)


context.log("final data" finaljson.length)





context.res = {
    // status: 200, /* Defaults to 200 */
    body: itemjson
};
  

}

Ответ №1:

Это решается путем добавления приведенного ниже кода в мой ответ функции Azure.

     context.res = {
        // status: 200, /* Defaults to 200 */
        body: finaljson,
        headers: {
        'Content-Type': 'application/json'
    }```