Я хочу изменить вывод JSON, используя JS - PullRequest
0 голосов
/ 12 февраля 2020

Мой JSON вывод такой

{"intent":"P&P_Purchase","value1":{"date1":"30-Dec-19","prd_desc":"NEEM UREA OMIFCO (45 KG)","qty":"18MT","inv_no":"NRKT07003160"},"value2":{"date1":"25-Dec-19","prd_desc":"NEEM UREA IMP (45 KG)","qty":"18MT","inv_no":"NRKT07003107"},"value3":{"date1":"19-Dec-19","prd_desc":"DAP IMP","qty":"20MT","inv_no":"NRKT07003058"},"value4":{"date1":"16-Dec-19","prd_desc":"NEEM UREA OMIFCO (45 KG)","qty":"18MT","inv_no":"NRKT07003043"},"value5":{"date1":"30-Nov-19","prd_desc":"NEEM UREA IMP (45 KG)","qty":"54MT","inv_no":"NRKT07002921"},"value6":null,"value7":null,"value8":null,"value9":null,"value10":null}

Что я хочу заменить value1 = {"date1": "30-De c -19", "prd_des c" : "NEEM UREA OMIFCO (45 кг)", "Кол-во": "18MT", "inv_no": "NRKT07003160"} в подобие value1 = Дата: 30-De c -19, Продукт: NEEM UREA OMIFCO (45 кг), количество: 18MT, inv_no: NRKT07003160

Вот мой существующий код

    var sdata = JSON.stringify(data);
    const options = {
           method: 'POST',
           uri: 'http://chatbotWebservice/resources/webservice/service' ,
           body: JSON.parse(sdata) ,
           json: true
           }
        return request(options)
            .then( body => {
                var unit =  body
                unit.intent = "P&P_Purchase"
                unit.value1 = unit.level3purpay[0]
console.log(unit.level3purpay[0].prd_desc)
                unit.value2 = unit.level3purpay[1]
                unit.value3 = unit.level3purpay[2]
                unit.value4 = unit.level3purpay[3]
                unit.value5 = unit.level3purpay[4]
                unit.value6 = null
                unit.value7 = null
                unit.value8 = null
                unit.value9 = null
                unit.value10 = null
                delete unit.level3purpay
                var unit2 = JSON.stringify(unit)
                console.log(unit2)
          conv.ask(unit2);

              })
              .catch( err => {
               console.error( err );
               conv.ask('Something went wrong. What should I do now?');
                 });

Я могу поделиться дополнительной информацией, если потребуется. Спасибо и, пожалуйста, помогите мне в этом.

Ответы [ 2 ]

2 голосов
/ 12 февраля 2020

Используйте Object.entries, map и join для формирования строки.

const value1 = {
  date1: "30-Dec-19",
  prd_desc: "NEEM UREA OMIFCO (45 KG)",
  qty: "18MT",
  inv_no: "NRKT07003160"
};

const labels = {
  date1: "Date",
  prd_desc: "Product",
  qty: "Quantity",
  inv_no: "inv_no"
};

const new_value1 = Object.entries(value1)
  .map(([key, value]) => `${labels[key]}:${value}`)
  .join();

console.log(new_value1);
0 голосов
/ 12 февраля 2020
value1.Product=value1.prd_desc

для добавления значения

delete value1.prd_dsc

для удаления (вы не должны делать это так, если точно не знаете, что делаете), другим подходом будет копирование данных

value1={date1:value1.date1,Product:value1.prd_desc}
...