年前无意间开源了一个简单的方法,没想到真的有人下载!

前言

年前在 npm 上发布了一个开源方法,是在年前开发中想要解决的一个问题,年后后来发现,有一定的下载量,看来是解决了一些人的痛点。

想法萌生

最近在搞数据转换,要将其他平台的数据导入到自己平台中,主要类型是 json to json。在编写方法类时,希望能有一个方法能够直接将想要的字段进行转换,还可以将多个字段进行拼接或者处理。在 npm 搜索相关库时,并没有找到相关的方法,所以打算自己写一个方法。

技术选型

有了需求之后就要付出实践!

技术这边选用的是 TS + Rollup + Jest。

选用 TS 是因为方法可以控制入参类型,Rollup 小型 JavaScript 的模块打包工具,将小的代码片段编译成更大、更复杂的代码,Jest 进行单元测试。

需求实现

定义一个方法,两个入参,一个是想要转换的数据,还有一个是模板(schema),通过这个模板返回想要的数据格式。

想要转换的数据类型包括数组和对象,并支持嵌套。

具体代码很简单 40 行的代码量,主要是递归生成,附上源码欢迎大家提出意见!convert-schema-json

效果展示

安装

npm i convert-schema-json

使用

js 复制代码
import { convert } from 'convert-schema-json';

// Ordinary use
const data = [
    {
        id: 1,
        name: 'Jack'
    },
    {
        id: 2,
        name: 'Tony'
    }
];
const schema = {Id: 'id', Name: 'name'};
const res = convert(data, schema);
// res = [ 
//     { Id: 1, Name: 'Jack' }, 
//     { Id: 2, Name: 'Tony' } 
// ]

// Support schema is a function

const data = [
    {
        id: 1,
        name: 'Jack',
        profession: 'programmer'
    },
    {
        id: 2,
        name: 'Tony',
        profession: 'barber'
    }
]
const schema = {
    Id: 'id',
    NameWithProfession: {
        key: ['name', 'profession'],
        schema: function(name, profession) {
            return `${name}-${profession}`
        }
    }
}
const res = convert(data, schema);
// res = [
//       { Id: 1, NameWithProfession: 'Jack-programmer' },
//       { Id: 2, NameWithProfession: 'Tony-barber' }
// ]

// Nested objects

const data = {
    id: 1,
    name: 'Jack',
    profession: 'programmer',
    son: {
        id: 2,
        name: 'Tony',
        profession: 'barber'
    }
}
const schema = {
    son_name: 'son.name',
    son_profession: 'son.profession'
}
const res = convert(data, schema);
// res = { son_name: 'Tony', son_profession: 'barber' }

// Nested objects with shcema is a function
const data = {
    id: 1,
    name: 'Jack',
    profession: 'programmer',
    son: {
        id: 2,
        name: 'Tony',
        profession: 'barber'
    }
}
const schema = {
    Id: 'id',
    fatherAndSonName: {
        key: ['name', 'son.name'],
        schema: (args) => {
            return args.join('-');
        }
    }
}
const res = convert(data, schema);
// res = { Id: 1, fatherAndSonName: 'Jack-Tony' }

总结

年前写的无意间开源的一个简单的json to json的方法,没想到会解决一部分人的痛点还是很高兴的,还希望大家能给多对代码多提一些宝贵的意见,或者对此有什么拓展想法也希望能评论告诉我。

相关推荐
To_OC3 小时前
LC 51 N 皇后:我以为难的是回溯,结果栽在了对角线下标
javascript·算法·leetcode
不好听6133 小时前
从一行 JSX 到屏幕像素:前端开发者必须懂的浏览器渲染管线
前端
恒拓高科WorkPlus3 小时前
企业级内网即时通讯建设模型:BeeWorks内网IM四层架构
前端
前端小李子4 小时前
前端环境变量裸奔?我用 EnvShield 给它穿了件防弹衣
前端
youtootech4 小时前
HarmonyOS《柚兔学伴》项目实战25-我的页面、Web 嵌入与项目总结
前端·华为·harmonyos
小林ixn5 小时前
从零到一理解 React 父子组件通信:手写一个 Todo 应用带你彻底搞懂单向数据流
前端·javascript·react.js
醇氧6 小时前
CountDownLatch / CyclicBarrier / Semaphore 面试高频问答清单
前端·面试·职场和发展
窝子面7 小时前
手搓最简前后端协作-node
javascript·数据库
qetfw7 小时前
MXU:Tauri 2 + React 的 MaaFramework 跨平台 GUI 源码
前端·python·react.js·前端框架·开源项目·效率工具