transUtil.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. export function parseXML(xmlData) {
  2. // 提取XML中的JSON字符串
  3. const jsonString = xmlData.replace('<?xml version="1.0" encoding="utf-8"?>', '').replace(
  4. '<string xmlns="http://schema.kingdee.com/LUTAIWebServiceExtend/">', '').replace('</string>', '');
  5. // 将JSON字符串转换为JSON对象
  6. try {
  7. const jsonData = JSON.parse(jsonString);
  8. // console.log(jsonData); // 输出解析后的JSON数据
  9. return jsonData
  10. } catch (e) {
  11. console.error('解析JSON时发生错误:', e);
  12. }
  13. }
  14. export function parseEncodedData(jsonData) {
  15. // let formData = [];
  16. // for (let key in jsonData) {
  17. // if (Array.isArray(jsonData[key])) {
  18. // jsonData[key].forEach((item, index) => {
  19. // for (let subKey in item) {
  20. // formData.push(encodeURIComponent(`${key}[${index}][${subKey}]`) + '=' + encodeURIComponent(
  21. // item[subKey]));
  22. // }
  23. // });
  24. // } else {
  25. // formData.push(encodeURIComponent(key) + '=' + encodeURIComponent(jsonData[key]));
  26. // }
  27. // }
  28. // let str = formData.join('&');
  29. // console.log(str)
  30. // return str;
  31. const urlEncodedData = jsonToUrlEncoded(jsonData).join('&');
  32. console.log(urlEncodedData)
  33. return urlEncodedData;
  34. }
  35. function jsonToUrlEncoded(jsonData, prefix = 'jsonData') {
  36. let str = [];
  37. for (let key in jsonData) {
  38. if (jsonData.hasOwnProperty(key)) {
  39. let encodedKey = encodeURIComponent(prefix ? `${prefix}[${key}]` : key);
  40. let value = jsonData[key];
  41. if (Array.isArray(value)) {
  42. value.forEach((item, index) => {
  43. str.push(...jsonToUrlEncoded(item, `${encodedKey}[${index}]`));
  44. });
  45. } else if (typeof value === 'object' && value !== null) {
  46. str.push(...jsonToUrlEncoded(value, encodedKey));
  47. } else {
  48. let encodedValue = encodeURIComponent(value);
  49. str.push(encodedKey + '=' + encodedValue);
  50. }
  51. }
  52. }
  53. return str;
  54. }