Coder Social home page Coder Social logo

goson's Introduction

goson

⚡️[WIP] Golang SIMPLE JSON Schema extractor from raw-json string

Roadmap

Currently with MVP release ( target: stable v1), there are a few things we need to finish. You can view the list in the: https://waffle.io/bxcodec/goson

Contributions

I really appreciate for everyone who willing to help to finish this, you can choose any task from https://waffle.io/bxcodec/goson and make a PR to this repository.

The task with label epic means it's need to finish ASAP.

Example

var (
	example = `{
		"id": "uk123",
		"name": "tom",
		"email": "[email protected]",
		"user": {
			"address": "Sidikalang",
			"age": 23,
			"phones": [
				"08234239523",
				"08234239523"
			]
		},
		"arr": [{
			"site": "string",
			"url": "string"
		}],
		"tags": ["go", "js"],
		"numbers": [3, 4, 5] 
	}`
)
schema,_:=goson.GenerateJSONSchema(example)

jbyt, _ := schema.ToJSON()


fmt.Println(string(jbyt))
/*
 Will Print: 
{"properties":{"arr":{"items":{"properties":{"site":{"type":"string"},"url":{"type":"string"}},"type":"object"},"type":"array"},"email":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"numbers":{"items":{"type":"number"},"type":"array"},"tags":{"items":{"type":"string"},"type":"array"},"user":{"properties":{"address":{"type":"string"},"age":{"type":"number"},"phones":{"items":{"type":"string"},"type":"array"}},"type":"object"}},"type":"object"}
*/

// Or in Formatted data:
/*
{
 "properties": {
	"arr": {
		"items": {
			"properties": {
				"site": {
					"type": "string"
				},
				"url": {
					"type": "string"
				}
			},
			"type": "object"
		},
		"type": "array"
	},
	"email": {
		"type": "string"
	},
	"id": {
		"type": "string"
	},
	"name": {
		"type": "string"
	},
	"numbers": {
		"items": {
			"type": "number"
		},
		"type": "array"
	},
	"tags": {
		"items": {
			"type": "string"
		},
		"type": "array"
	},
	"user": {
		"properties": {
			"address": {
				"type": "string"
			},
			"age": {
				"type": "number"
			},
			"phones": {
				"items": {
					"type": "string"
				},
				"type": "array"
			}
		},
		"type": "object"
	}
	},
	"type": "object"
}
*/

goson's People

Contributors

bxcodec avatar ecojuntak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

ecojuntak

goson's Issues

feat: Type for null data

Current version:
In the current version, if we generate a schema from JSON with null data will cause an error
Example:

json = {
  "data": null
}

What I proposed is:
Checking the value is type of nil, something like this:

func getType(item interface{}) string {
	switch item.(type) {
	case string:
		return "string"
	...
	case nil:
		return "nil"
	default:
		var r = reflect.TypeOf(item)
		return fmt.Sprintf("%s", r.String())
	}
}

This feature will make sure no error happened when getting null value from response body.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.