更新记录

1.0.0(2025-11-16) 下载此版本

--首次发布,支持多种数据结构转换


平台兼容性

uni-app(3.6.14)

Vue2 Vue2插件版本 Vue3 Vue3插件版本 Chrome Chrome插件版本 Safari Safari插件版本 app-vue app-vue插件版本 app-nvue app-nvue插件版本 Android Android插件版本 iOS iOS插件版本 鸿蒙 鸿蒙插件版本
√ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 5.0 1.0.0 12 1.0.0 √ 1.0.0
微信小程序 微信小程序插件版本 支付宝小程序 支付宝小程序插件版本 抖音小程序 抖音小程序插件版本 百度小程序 百度小程序插件版本 快手小程序 快手小程序插件版本 京东小程序 京东小程序插件版本 鸿蒙元服务 鸿蒙元服务插件版本 QQ小程序 QQ小程序插件版本 飞书小程序 飞书小程序插件版本 小红书小程序 快应用-华为 快应用-华为插件版本 快应用-联盟 快应用-联盟插件版本
√ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 - √ 1.0.0 √ 1.0.0

uni-app x(3.6.14)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - - - -

其他

多语言 暗黑模式 宽屏模式 蒸汽模式
√ √ √ ×

hy-data-converter

一个功能强大的数据格式转换 uni-app 插件,支持 JSON、XML、YAML、CSV、查询字符串、Base64 等多种格式的相互转换。

✨ 特性

  • 🚀 支持多种数据格式转换 - JSON、XML、YAML、CSV、查询字符串、Base64 等
  • 📦 零依赖,轻量级 - 不依赖任何第三方库,体积小巧
  • 🛡 TypeScript 类型支持 - 完整的类型定义,提供更好的开发体验
  • 💪 支持 Vue 2 和 Vue 3 - 完美兼容不同版本的 Vue
  • 🔧 高度可配置 - 丰富的配置选项,满足各种使用场景
  • 🎯 完善的错误处理 - 内置数据验证和错误处理机制
  • 🌐 跨平台支持 - 支持 uniapp 和 uniappx,兼容所有平台

📋 支持的格式

  • JSON - JavaScript 对象表示法
  • XML - 可扩展标记语言
  • YAML - YAML 不是标记语言
  • CSV - 逗号分隔值
  • 查询字符串 (Query String) - URL 查询参数格式
  • Base64 - Base64 编码/解码

🚀 快速开始

1. 安装插件

在 main.js (Vue 3) 或 main.uts (uniappx) 中安装插件:

import { createApp } from 'vue'
import App from './App.vue'
import hyDataConverter from '@/uni_modules/hy-data-converter/js_sdk/index.js'

const app = createApp(App)
app.use(hyDataConverter, {
  strictMode: false,
  throwOnError: false
})
app.mount('#app')

2. 在页面中使用

选项式 API (Vue 2/3)

export default {
  methods: {
    convertData() {
      // JSON 转 XML
      const xml = this.$hyConverter.jsonToXml({
        user: { name: '张三', age: 25 }
      })

      // XML 转 JSON
      const json = this.$hyConverter.xmlToJson('<user><name>李四</name></user>')

      // 通用转换方法
      const result = this.$hyConverter.convert(
        'name=张三&age=25', 
        'querystring', 
        'json'
      )
    }
  }
}

组合式 API (Vue 3)

import { getCurrentInstance } from 'vue'

export default {
  setup() {
    const { proxy } = getCurrentInstance()

    const convertData = () => {
      const yaml = proxy.$hyConverter.jsonToYaml({ key: 'value' })
      const json = proxy.$hyConverter.yamlToJson(yaml)
    }

    return { convertData }
  }
}

直接导入使用

import { HyDataConverter } from '@/uni_modules/hy-data-converter/js_sdk/index.js'

const converter = new HyDataConverter()
const result = converter.jsonToXml({ data: 'test' })

📖 API 文档

通用转换方法

convert(data, fromFormat, toFormat, options)

通用转换方法,支持所有格式之间的转换。

参数:

  • data (any): 要转换的数据
  • fromFormat (string): 源格式,可选值:'json', 'xml', 'yaml', 'csv', 'querystring', 'base64'
  • toFormat (string): 目标格式
  • options (object, 可选): 转换选项

返回值: 转换后的数据

示例:

// JSON 转 XML
const xml = this.$hyConverter.convert(
  { name: '张三', age: 25 },
  'json',
  'xml'
)

// CSV 转 JSON
const json = this.$hyConverter.convert(
  'id,name\n1,张三',
  'csv',
  'json'
)

快捷方法

JSON 相关

  • jsonToXml(data, options) - JSON 转 XML
  • jsonToYaml(data, options) - JSON 转 YAML
  • jsonToCsv(data, options) - JSON 转 CSV
  • jsonToQueryString(data, options) - JSON 转查询字符串

XML 相关

  • xmlToJson(data, options) - XML 转 JSON

YAML 相关

  • yamlToJson(data, options) - YAML 转 JSON

CSV 相关

  • csvToJson(data, options) - CSV 转 JSON

查询字符串相关

  • queryStringToJson(data, options) - 查询字符串转 JSON

Base64 相关

  • encodeBase64(data) - Base64 编码
  • decodeBase64(data) - Base64 解码

工具方法

格式相关

  • getSupportedFormats() - 获取所有支持的格式列表
  • validateFormat(format) - 验证格式是否支持
  • getSupportedConversions() - 获取所有支持的转换组合

数据处理

  • formatJson(json, indent) - 美化 JSON 输出
  • minifyJson(json) - 压缩 JSON
  • isValidJson(str) - 验证 JSON 格式
  • deepClone(obj) - 深度克隆对象
  • detectDataType(data) - 检测数据类型

HTML 处理

  • escapeHtml(html) - 转义 HTML 特殊字符
  • unescapeHtml(html) - 反转义 HTML 特殊字符

批量操作

  • batchConvert(data, conversions, options) - 批量转换数据

示例:

// 批量转换
const conversions = [
  { from: 'json', to: 'xml' },
  { from: 'json', to: 'yaml' },
  { from: 'json', to: 'csv' }
]

const results = this.$hyConverter.batchConvert(
  { name: 'test', value: 123 },
  conversions
)

⚙️ 配置选项

全局配置

在安装插件时可以设置全局配置:

app.use(hyDataConverter, {
  strictMode: false,      // 严格模式,默认 false
  throwOnError: false     // 出错时抛出异常,默认 false
})

格式特定选项

XML 转换选项

{
  rootName: 'root',           // 根元素名称
  attributePrefix: '@',        // 属性前缀
  textNodeName: '#text',       // 文本节点名称
  ignoreAttributes: false      // 是否忽略属性
}

YAML 转换选项

{
  indent: 2,                   // 缩进空格数
  skipInvalid: false          // 跳过无效数据
}

CSV 转换选项

{
  delimiter: ',',              // 分隔符
  headers: true,               // 是否包含表头
  quoteFields: true,           // 是否用引号包裹字段
  dynamicTyping: true          // 动态类型转换
}

查询字符串转换选项

{
  encode: true,                // 是否编码
  decode: true,                // 是否解码
  arrayFormat: 'brackets',     // 数组格式:'brackets' | 'indices' | 'comma'
  parseNumbers: true,          // 解析数字
  parseBooleans: true          // 解析布尔值
}

💡 使用示例

JSON 转 XML

const jsonData = {
  user: {
    id: 1,
    name: "张三",
    profile: {
      age: 25,
      city: "北京"
    }
  }
}

const xml = this.$hyConverter.jsonToXml(jsonData, {
  rootName: 'response',
  attributePrefix: '@'
})

// 输出:
// <response>
//   <user>
//     <id>1</id>
//     <name>张三</name>
//     <profile>
//       <age>25</age>
//       <city>北京</city>
//     </profile>
//   </user>
// </response>

XML 转 JSON

const xmlData = `
  <user>
    <id>1</id>
    <name>李四</name>
    <email>lisi@example.com</email>
  </user>
`

const json = this.$hyConverter.xmlToJson(xmlData)
// 输出:{ user: { id: 1, name: '李四', email: 'lisi@example.com' } }

JSON 转 YAML

const jsonData = {
  app: {
    name: "我的应用",
    version: "1.0.0",
    settings: {
      theme: "dark",
      language: "zh-CN"
    }
  }
}

const yaml = this.$hyConverter.jsonToYaml(jsonData)

CSV 转 JSON

const csv = `id,name,email
1,张三,zhangsan@example.com
2,李四,lisi@example.com
3,王五,wangwu@example.com`

const json = this.$hyConverter.csvToJson(csv, {
  headers: true,
  dynamicTyping: true
})

// 输出:
// [
//   { id: 1, name: '张三', email: 'zhangsan@example.com' },
//   { id: 2, name: '李四', email: 'lisi@example.com' },
//   { id: 3, name: '王五', email: 'wangwu@example.com' }
// ]

Base64 编码/解码

// 编码
const originalData = {
  message: "Hello, Base64!",
  timestamp: new Date().toISOString()
}

const encoded = this.$hyConverter.encodeBase64(originalData)

// 解码
const decoded = this.$hyConverter.decodeBase64(encoded)

查询字符串转换

// JSON 转查询字符串
const params = {
  search: "uniapp",
  page: 1,
  limit: 20,
  filters: ["recent", "popular"]
}

const queryString = this.$hyConverter.jsonToQueryString(params, {
  arrayFormat: 'brackets'
})
// 输出:search=uniapp&page=1&limit=20&filters[]=recent&filters[]=popular

// 查询字符串转 JSON
const json = this.$hyConverter.queryStringToJson(queryString)

工具方法示例

// 美化 JSON
const formatted = this.$hyConverter.formatJson({ name: 'test', age: 25 }, 2)

// 压缩 JSON
const minified = this.$hyConverter.minifyJson({ name: 'test', age: 25 })

// 验证 JSON
const isValid = this.$hyConverter.isValidJson('{"name":"test"}') // true

// 深度克隆
const cloned = this.$hyConverter.deepClone({ nested: { data: 'value' } })

// 检测数据类型
const type = this.$hyConverter.detectDataType([1, 2, 3]) // 'array'

🛡 TypeScript 支持

插件提供完整的 TypeScript 类型定义:

import type { HyDataConverter, ConverterOptions } from '@/uni_modules/hy-data-converter/types/index.d.ts'

// 使用类型
const converter: HyDataConverter = new HyDataConverter()
const options: ConverterOptions = {
  strictMode: false,
  throwOnError: false
}

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

许可协议

MIT协议