简体   繁体   English

如何去除大括号并保留JSON的键值

[英]How to Remove curly brackets and remane the key value of JSON

I am getting output like this我得到这样的输出

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

so, i want to remove all inner curl brackets as well rename the value like所以,我想删除所有内部大括号以及重命名值

{"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,Product:NEEM UREA OMIFCO (45 KG),Quantity:18MT,inv_no:NRKT07003160,"value3":Date:01-Jan-19,Product:NEEM UREA OMIFCO (45 KG),Quantity: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 UREA OMIFCO (45 KG),Quantity:18MT,inv_no:NRKT07003160,"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,Product:NEEM UREA OMIFCO (45 KG),Quantity:18MT,inv_no:NRKT0703" value4":日期:02-Jan-19,Product:NEEM UREA OMIFCO (45 KG),Quantity:18MT,inv_no:NRKT07003160,"value5":Date:03-Jan-19,Product:NEEM UREA OMIFCO (45 KG) ,数量:18MT,inv_no:NRKT07003160,"value6":null,"value7":null,"value8":null,"value9":null,"value10":null}

Now, I am trying to do with this code but i am not able to achieve it现在,我正在尝试使用此代码,但无法实现

    ```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?');
             });
          }) 

Please help me out.请帮帮我。 Thanks谢谢

try a recursive function!尝试递归函数!

Pseudocode:伪代码:

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];
   }
  }
}

WARNING: be careful with nested duplicated key names ex:警告:小心嵌套重复的键名,例如:

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

will output会输出

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

try adding the parent name:尝试添加父名称:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM