JSON to Go 结构转换器将一个 JSON 文档变成描述它的 Go 类型声明,因此您可以使用编码/json 取消编组相同的数据,而不是手工输入结构。每个 JSON 对象都变成 Go 结构,每个字段都携带一个 json:"key" 标签,将其映射回原始名称,并且从值推断标量类型:JSON 字符串变成字符串,整数变成 int,十进制变成 float64,真和假变成 bool,null 变成 interface{}。粘贴有效负载,然后返回一个准备编译的类型块。
它的存在是因为从真实的 API 响应编写 Go 结构很乏味,并且很容易被微妙地弄错。字段名称必须导出并遵循 Go 约定,因此 id 变为 ID,user_url 变为 UserURL,而 json 标签必须保留确切的原始密钥或 json。Unmarshal 默默跳过该字段。嵌套对象需要自己的结构,并且对象数组需要覆盖任何元素所具有的每个密钥的单个结构。在深度嵌套响应中执行此操作是错误蔓延的地方。转换器一致地应用这些规则:嵌套对象成为内联结构,对象数组被合并,因此仅出现在某些元素中的密钥仍然存在于生成的类型中。
Everything都在你的浏览器中运行你粘贴的JSON在你自己的设备上用JavaScript解析和分析,所以没有任何东西被上传,记录或存储,一旦页面加载,该工具就一直与断开连接的网络有效负载是私有API响应或包含你宁愿不发送到任何地方的密钥和值时,这很重要,你可以重命名根类型,当你需要更宽的类型时将整数切换到int64,当你希望编码输出中省略零值时,可以为每个标签添加省略。
JSON 对象或数组粘贴到输入框中,如果您想在使用自己的数据之前看到生成的 struct 的形状,请先加载样本。
输入顶级结构的名字,例如 User 或 ApiResponse。它被清理成有效的导出 Go 标识符,因此它会按写入的方式进行编译。
选择整数的 int 或 int64,如果您希望在将 struct 编码回 JSON 时省略空字段,请打开 omitempty。
击转换来构建结构定义,然后将它们复制到您的 Go 文件中,无效的 JSON 会用精确的解析器消息报告,以便您可以修复它。
每个字段都保留一个 json:"original_key"标签,因此 json。Unmarshal 将数据映射回确切的 JSON 名称,即使 Go 字段已重命名以遵循约定。
键导出,常见的首字母大写,因此 id 变为 ID,user_url 变为 UserURL,html_body 变为 HTMLBody,符合 golint 的期望。
Nested JSON 对象成为任何深度的内联结构文字,因此整个形状都存在于一个声明中,您可以粘贴为单个块。
对象数组产生一个结构,涵盖任何元素拥有的每个密钥,并且密钥的冲突值类型会回退到接口{}而不是失败。
Generate a JSON Schema from any JSON sample. Infers types, merges arrays of objects into one item schema, derives required fields, and detects date-time, email, uri, and uuid formats. Draft-07 and 2020-12 output. 100% client-side.
Sort the keys of a JSON object alphabetically, recursively through nested objects, with optional array sorting. Ascending or descending, minify or pretty. Client-side, no signup.
Convert JSON into a PHP array literal. Choose short [] or array() syntax, indentation, and an optional variable assignment, then copy the result. 100% in your browser.
Generate TypeScript interfaces from any JSON sample. Infers nested types, merges arrays of objects into a single interface, marks nullable and missing keys optional, and emits clean exportable code. 100% client-side.
0 comments
No comments yet. Be the first to share your thoughts!