更新记录

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

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


平台兼容性

uni-app(3.6.14)

Vue2 Vue2插件版本 Vue3 Vue2插件版本 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协议

暂无用户评论。