开发中遇到了用js解析重新组装json数据的要求,关键点在于JSON中的串的键是动态的,多方查找解决了在此做个记录。同时我也深感js中循环的无赖,如果用i作为键会得到索引,用key作为循环变量竟然可以得到key,不太理解这种设计,暂且记录下来吧。
var jsonObj =JSON.parse(data.json); console.log("payProductMap是:"+JSON.stringify(jsonObj.payProductMap)); var payProductMapJson = jsonObj.payProductMap; var resultJson = {}; for (var key in payProductMapJson) { //alert("第一层:"+key); //alert("第一层:"+payProductMapJson[key]); resultJson.payProductName = key; resultJson.dsPayBankMap = JSON.stringify(payProductMapJson[key]); console.log("第一个JSON对象是:"+JSON.stringify(payProductMapJson)); break; }
其中,关于json的格式说明如下(支付产品名称是根据页面选择生成的,也就是说JSON串中产品名称不是固定的,这个时候要再页面重新组装数据):
"{\"payProductMap\":{\"ONE_KEY_PAY_DEBIT\":{\"dsPayBankMap\":{\"BANK_PAY_WAP\":{\"rateType\":\"PERCENTAGE\",\"rate\":\"5\"}}}},\"payScenarioMap\":{\"H5_ACCESS\":{\"webUrl\":\"127.0.0.1\"},\"ZF_SHH_ZFB\":{}}}"