需要使用到一个插件x2js 来进行json和xml之间的前端转换
步骤1,
cnpm install x2js --save
import x2js from 'x2js'
Vue.prototype.$x2js = new x2js()
一: json转成xml 使用场景,这里的需求是我的data不能直接写成xml,我的data数据中包含了好几个变量,因此需要在前端转换形式。
let data = {
"appid": "wx31d3c5bdf4d8a909",
"body": "h",
"mch_id": "1594545781",
"nonce_str": this.nums,
"notify_url": "http://101.132.238.216:8000/api/callBack/wx_pay_callBack",
"out_trade_no": "202005209809",
"spbill_create_ip": "101.132.238.216",
"total_fee": "101",
"trade_type": "MWEB",
"sign": this.sign
}
let xmll = this.$x2js.js2xml(data)
let xmlq = `<root>`+ xmll+ `</root>` //直接这么转没有外层的xml规范,但在外层加一个root包裹起来也是没问题的。
let xml = "\`"+xmlq+"\`" //使用转义字符串,将xml用``包裹起来
console.log(xml) //这是的xml就可以直接使用了
使用:
uni.request({
url: '/prefix/pay/unifiedorder', //仅为示例,并非真实接口地址。
data: {
xml //变量,上面获得的
},
method: 'POST',
header: {
header: { 'content-type': 'application/x-www-form-urlencoded'}
},
success: (res) => {
console.log(res.data)
let ress = res.data
let resXml = this.$x2js.xml2js(ress)
let mweb_url = resXml.xml.mweb_url
// location.href = mweb_url
},
fail: function(res) {
console.log(res.data);
}
});
},
二, xml转json 使用场景,我需要得到xml中的回调地址这一个属性的值,但不会使用xml的形式来取:
success: (res) => {
console.log(res.data)
let ress = res.data
let resXml = this.$x2js.xml2js(ress) //xml转json
let mweb_url = resXml.xml.mweb_url
// location.href = mweb_url
},