【问题标题】:How to Remove curly brackets and remane the key value of JSON如何删除大括号并重命名 JSON 的键值
【发布时间】:2020-05-28 08:31:15
【问题描述】:

我得到这样的输出

{"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}

所以,我想删除所有内部大括号,并将值重命名为

{"intent":"P&P_Purchase","value1":Date:30-Dec-19,Product:NEEM UREA OMIFCO (45 KG),Quantity:18MT,inv_no:NRKT07003160,"value2":Date :31-Dec-19,产品:NEEM UREA OMIFCO (45 KG),数量:18MT,inv_no:NRKT07003160,"value3":Date:01-Jan-19,产品:NEEM UREA OMIFCO (45 KG),数量:18MT ,inv_no:NRKT07003160,"value4":Date:02-Jan-19,Product:NEEM UREA OMIFCO (45 KG),Quantity:18MT,inv_no:NRKT07003160,"value5":Date:03-Jan-19,Product:NEEM尿素 OMIFCO (45 KG),数量:18MT,inv_no:NRKT07003160,"value6":null,"value7":null,"value8":null,"value9":null,"value10":null}

现在,我正在尝试使用此代码,但我无法实现它

    ```var data = {"token" : token,"serviceID" : serviceID,"P_USERID" : P_USERID };
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
            const unit_value = {
            date1: "Date",
            prd_desc: "Product",
            qty: "Quantity",
            inv_no: "inv_no"
            };
            const unit2 = Object.entries(unit)
            .map(([key, value]) => `${labels[key]}:${value}`)
            .join();
            var unit3 = JSON.stringify(unit2)
            console.log(unit3)
      conv.ask(unit2);
          })
          .catch( err => {
           console.error( err );
           conv.ask('Something went wrong. What should I do now?');
             });
          }) 

请帮帮我。谢谢

【问题讨论】:

标签: javascript arrays node.js json


【解决方案1】:

尝试递归函数!

伪代码:

cleanjson = {};
function clearBrakets(json,parent_name){
  keys = getKeys(json);
  for(i = 0; i < keys.lenght; i ++){
   if(json[keys[i]].type == array){
    clearBrakets(json[keys[i]],keys[i]);
   }else{
    cleanjson[parent_name + keys[i]] = json[i];
   }
  }
}

警告:小心嵌套重复的键名,例如:

{obj1:{value="aa",name="cc"},obj2:{value="bb"}}

会输出

{value="bb",name="cc"} 而不是{value="aa",name="cc",value="bb"}

尝试添加父名称:

{obj1_value="aa",obj1_name="cc",obj2_value="bb"}

【讨论】:

    猜你喜欢
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多