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

前言

年前在 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的方法,没想到会解决一部分人的痛点还是很高兴的,还希望大家能给多对代码多提一些宝贵的意见,或者对此有什么拓展想法也希望能评论告诉我。

相关推荐
JerryXZR4 分钟前
前端开发中ES6的技术细节二
前端·javascript·es6
七星静香6 分钟前
laravel chunkById 分块查询 使用时的问题
java·前端·laravel
q2498596939 分钟前
前端预览word、excel、ppt
前端·word·excel
小华同学ai14 分钟前
wflow-web:开源啦 ,高仿钉钉、飞书、企业微信的审批流程设计器,轻松打造属于你的工作流设计器
前端·钉钉·飞书
problc19 分钟前
Flutter中文字体设置指南:打造个性化的应用体验
android·javascript·flutter
Gavin_91523 分钟前
【JavaScript】模块化开发
前端·javascript·vue.js
懒大王爱吃狼1 小时前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
待磨的钝刨3 小时前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看
开发语言·javascript·json
逐·風5 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#
Devil枫6 小时前
Vue 3 单元测试与E2E测试
前端·vue.js·单元测试