Skip to content

AuroraV/json-to-go

Repository files navigation

JSON-to-GO:将JSON转换成Go结构体定义 【纯GOLANG实现】

灵感来自json-to-go
用法:
// 解析json元信息
meta := Parse(json)
// 根据元信息渲染输出结构体定义
// inline:true/false;结构体内联/分离输出
structDef := GenerateStruct(meta, inline)

安装:

go install github.com/AuroraV/json-to-go/cmd/[email protected]

j2g -s '{"a":123, "b":{"c":1.23, "d":["9", "8"]}}' -f true --inline true 

Features:

  • json转golang结构体定义输出
  • 输出模式可选:内联或分离
  • CLI交互式生成结构体定义文件
  • 内置简单web页,支持在线编辑
  • 更多JSON生成代码的探索
  • 支持对JSON流进行业务含义定义,类似字典赋能业务
  • ...

JSON结构是业内常用的传输语言; 若您有更多JSON可视化想法或对此项目有疑问,欢迎积极参与提ISSUE,您将获得积极的响应。

使用样例

在线编辑

// You can edit this code!
// Click here and start typing.
package main

import (
	"fmt"
	"strings"

	j2g "github.com/AuroraV/json-to-go"
)

func main() {
	meta := j2g.Parse(`[{
	"input_index": 100000001,
	"components": [{
		"primary_number": "1",
		"a": 0.83
	}, {
		"a": 1.01,
		"b": 1.28
	}]
}]`)
	structDef := j2g.GenerateStruct(meta, true)
	structDef = j2g.GenerateStruct(meta, false)
	fmt.Println(strings.Join(structDef, "\n----------------------------------------\n"))
	// output:
	/*
		1. output [inline = true] :
		type AutoGenerated []struct {
			InputIndex int64 `json:"input_index"`
			Components []struct {
				PrimaryNumber string `json:"primary_number,omitempty"`
				A float64 `json:"a"`
				B float64 `json:"b,omitempty"`
			} `json:"components"`
		}

		2. output [inline = false] :
		type AutoGenerated []struct {
				InputIndex int64 `json:"input_index"`
				Components []Components `json:"components"`
		}
		----------------------------------------
		type Components struct {
				PrimaryNumber string `json:"primary_number,omitempty"`
				A float64 `json:"a"`
				B float64 `json:"b,omitempty"`
		}
	*/
}

License

This software is released under the MIT License, see LICENSE.

About

将json转换成golang结构体定义

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages