网站深度测评
Transform是什么网站?
Transform 是一个在线代码格式转换工具,把一种数据格式或代码结构直接转成另一种,省去手写转换脚本的时间。网址是 Transform。
主要用途是把常见开发格式互转,页面覆盖的类别包括:
- SVG:SVG 转 JSX、React Native;带 SVGO 优化开关,可在设置里关掉或调整。
- HTML:HTML 转 JSX、Pug。
- JSON:JSON 转 BigQuery Schema、Flow、Go Bson、Go Struct、GraphQL、io-ts、Java、JSDoc、JSON Schema、Kotlin、MobX-State-Tree Model、Mongoose Schema、MySQL、React PropTypes、Rust Serde、Scala Case Class、TOML、TypeScript、YAML、Zod Schema 等。
- JSON Schema:转 OpenAPI Schema、Protobuf、TypeScript、Zod Schema。
- CSS:转 JS Objects、TailwindCSS、template literal。
- 其他:GraphQL 相关转换、MongoDB、JSON-LD、TypeScript 与 Flow 互转、Markdown 转 HTML、TOML/YAML/XML 转 JSON 等。
适合谁用:前端把设计给的 SVG 贴进 React 组件、后端把 JSON 样例快速生成 Go/Java/Kotlin 结构体、数据工程把 YAML/TOML 配置转成 JSON、需要把 JSON 定义转成 Zod 或 JSON Schema 做校验的人。
怎么用:打开站点,选左侧源格式和目标格式,粘贴内容,右侧直接出结果并复制。转换在浏览器里完成,适合处理不想上传到服务器的代码片段。
同类工具可对比:json2ts 专注 JSON 转 TypeScript 类型;quicktype 支持多语言模型生成但偏重 JSON 到类型的场景。Transform 的侧重点是格式种类多、前后端与配置格式都覆盖,单个转换步骤更轻量。
如何把SVG代码转换成React Native可用的JSX?
在 Transform 上直接选 “SVG to JSX to React Native” 这条转换链即可:粘贴 SVG 代码,右侧会生成 JSX 输出,复制后放进 React Native 组件里用。
具体操作情境
- 手头有一段从设计工具导出的 SVG 源码,想用在 RN 的
react-native-svg组件里。 - 打开 Transform,进入 SVG 相关转换,选择目标为 React Native(页面把 “SVG to JSX to React Native” 作为一条链路列出)。
- 粘贴 SVG,复制生成的 JSX。
一个需要注意的细节 页面显示 “SVGO optimization is turned on. You can turn it off or configure it in settings.”,也就是转换前默认会跑 SVGO 压缩优化。如果发现属性被合并、路径被改写导致渲染异常,可以到设置里关掉或调整 SVGO。
为什么用这类工具而不是手改
SVG 里的 kebab-case 属性(如 stroke-width)、class、命名空间等要逐个换成 JSX 的驼峰写法和 react-native-svg 组件,手工容易漏。例如需要把一段带多个 <path> 和 <g> 的图标 SVG 转成 RN 组件时,用转换器一次生成更省时间。
同类选择
- SVGR:偏向把 SVG 转成 React/React Native 组件,适合需要 CLI 或构建流程集成的场景。
- React SVGR Playground:网页版,适合临时粘贴转换、对比输出。
两者都偏 React 生态;Transform 的优势是同一站内还能顺手做 JSON、TypeScript、CSS 等其他格式互转,适合一次处理多种转换需求。
JSON转TypeScript时,字段类型和嵌套结构会怎么处理?
在 Transform 上做 JSON → TypeScript,基本逻辑是:按 JSON 值的实际类型生成对应 TS 类型,嵌套对象会递归展开成嵌套的接口/类型,数组则按元素类型生成 T[]。它是个纯前端转换器,不推断业务语义,只反映你贴进去的数据长什么样。
字段类型怎么定
- 字符串 →
string,数字 →number,布尔 →boolean,null→null(或按设置处理成可选/联合类型)。 - 同名字段在不同对象里类型不一致时,通常合并成联合类型,比如
string | number,而不是报错。 - 字段是否可选,取决于它在样本里是否始终出现;只出现一次的对象字段往往被标成可选。
嵌套结构怎么处理
- 嵌套对象会生成嵌套的类型定义,而不是拍平成一层。
- 数组:对象数组会先生成元素类型,再以
元素类型[]引用;深层数组逐层套。 - 空对象
{}、空数组[]因为拿不到元素信息,一般退化成{}或any[]之类的宽松类型。
实际使用建议
- 先喂一份字段最全的样本,包含所有可能出现的键和可选值,否则生成的类型会漏字段。
- 想让可选字段更准,可以手动把样本里某些键删掉再转一次,对比两次结果。
- 生成结果偏“数据快照”,不是接口契约;跨接口复用时建议自己收敛命名、抽公共类型。
和其他方式比
- 和纯手写 interface 比,它省去逐字段敲的时间,但不会帮你判断字段该不该可选、该用枚举还是字面量联合。
- 和 JSON Schema 路线比,Transform 也支持 JSON Schema → TypeScript,如果你已有 Schema,走那条链路得到的类型通常比从裸 JSON 推断更严谨。
下一步:把最完整的那份 JSON 贴进去转一次,再拿真实接口返回的另一份样本验证,看有没有漏字段或类型冲突。
JSON Schema能直接生成OpenAPI或Protobuf吗?
可以。Transform 的 JSON Schema 转换里,明确包含 JSON Schema to OpenAPI Schema 和 JSON Schema to Protobuf 两项,属于它的直接转换能力,不需要先转成别的格式。
具体使用情境
- 已有 JSON Schema,想补一份 OpenAPI 文档里的 schema 部分:选 JSON Schema to OpenAPI Schema。
- 已有 JSON Schema,想生成 Protobuf 的 message 定义:选 JSON Schema to Protobuf。
- 同时还想把 JSON Schema 转成 TypeScript、Zod Schema 等,也可以在同一站内完成,适合前后端或接口文档之间来回对齐。
使用时要注意
- 这类转换是结构映射,不是“语义无损翻译”。JSON Schema 的校验关键字、组合规则和 Protobuf 的类型系统并不一一对应,转换后建议人工检查字段类型、必填项和嵌套结构。
- 如果目标是完整的 OpenAPI 文档(含 paths、参数、响应),这里给的是 schema 层面的转换,其余部分仍需自己补。
类似工具的选择
- 只做 JSON Schema 到 OpenAPI/Protobuf 的快速预览:Transform 够用,直接在网页里选对应转换即可。
- 需要生成完整 OpenAPI 文档、带接口路径和示例:更适合用 OpenAPI 相关的编辑器或生成器,而不是单纯的 schema 转换器。
- 需要 Protobuf 与代码双向生成:用 protoc 及其插件更稳妥,网页转换适合先看结构。
下一步动作:打开 Transform,在 JSON Schema 分组下找到目标项,粘贴 schema 后复制结果,再对照原始字段做一次人工校验。
CSS转TailwindCSS后,响应式写法和自定义值怎么保留?
用 Transform 的 CSS to TailwindCSS 转换时,响应式断点和自定义值不会自动“补全”成 Tailwind 的响应式前缀或任意值语法,需要你在转换结果里手动补齐。
响应式写法
- CSS 里的
@media规则通常会被拆成普通工具类,媒体查询条件本身容易丢失。 - 转换后要自己加断点前缀,例如
md:flex、lg:grid-cols-3,对应 Tailwind 的sm/md/lg/xl/2xl。 - 如果原媒体查询断点不是 Tailwind 默认值,先确认项目是否在配置里扩展了
screens,否则前缀对不上。
自定义值
- 非标准数值、颜色、间距不会自动进入
theme,转换结果里可能出现方括号任意值形式,如w-[327px]、bg-[#1a2b3c]。 - 想长期复用,建议把这些值写进 Tailwind 配置的
theme.extend,再改回语义化类名;只临时用一次就保留任意值写法。 - 涉及 CSS 变量时,Tailwind 不会自动映射,需要在配置里把变量接到对应色板或间距上。
操作建议
- 先用 Transform 的 CSS to TailwindCSS 得到基础类名。
- 逐条对照原 CSS 的
@media块,补上断点前缀。 - 把反复出现的自定义值抽到
tailwind.config的theme.extend。 - 转换后跑一遍页面,重点检查断点切换和任意值类是否被 purge 掉。
GraphQL的Introspection JSON怎样转成TypeScript类型或Resolver签名?
在 Transform 上,GraphQL Introspection JSON 可以直接转成 TypeScript 和 Resolver 签名,属于该站 GraphQL 分类下的转换项。
可用转换
- Introspection JSON → TypeScript
- Introspection JSON → Resolvers Signature
- Introspection JSON → JAVA
- Introspection JSON → Schema AST
- GraphQL → TypeScript
- GraphQL → Flow、Fragment Matcher、Components、Resolvers Signature、Schema AST
怎么用
- 打开 Transform,进入 GraphQL 分组。
- 左侧选 “Introspection JSON”,右侧选 “TypeScript” 或 “Resolvers Signature”。
- 把 Introspection JSON 粘贴到输入框,右侧即输出对应结果。
适用场景
- 已有运行中的 GraphQL 服务,想为前端生成类型定义:用 Introspection JSON → TypeScript。
- 在 Node/TypeScript 里写服务端 resolver,想拿到带参数和返回类型的签名骨架:用 Introspection JSON → Resolvers Signature。
- 只有 SDL schema 而没有 Introspection JSON:改用 GraphQL → TypeScript。
选择条件
- 要前端消费的静态类型:选 TypeScript 输出。
- 要服务端实现骨架:选 Resolvers Signature。
- 需要 Java 侧类型:选 JAVA 输出。
- 想先看 schema 结构再决定:选 Schema AST。
下一步
先在本地或 CI 里导出 Introspection JSON(GraphQL 标准查询 __schema 即可),再粘贴到 Transform 对应转换项;如果结果需要按项目风格调整,把输出当起点而非最终产物。
用户评价(0)