Skip to content

Examples

Nikita Krasnikov edited this page Mar 27, 2022 · 3 revisions

Data for all examples

JSON Data:

{
  "id": 2,
  "first_name": "Tam",
  "last_name": "Le-Good",
  "email": "[email protected]",
  "gender": "Bigender",
  "ip_address": "2.92.36.184",
  "addresses": [
    {
      "name": "Home",
      "city": "Test",
      "street": "Test st.",
      "house": "1",
      "coordinates": {
        "lon": 77.2123124,
        "lat": 43.2123124
      }
    }
  ],
  "skills": [
    "go",
    "php"
  ]
}

PHP (YII2)

Template:

<?php

namespace common\models;

using yii\base\BaseObject;

/***
 * Class {{ Name }}
 * @package common\models
 */
class {{ Name }} extends BaseObject
{
{{ Properties }}
	/**
	 * @var {{ Type.Doc }}
	 */
	public {{ Type }} ${{ Name.CamelCase }};
{{ /Properties }}
}

CLI-command: gendata gen -l php -t template.txt -d data.json --rootClassName Gen --prefixClassName Test --suffixClassName Class

Generated:

  • File: TestGenClass.php
<?php

namespace common\models;

using yii\base\BaseObject;

/***
 * Class TestGenClass
 * @package common\models
 */
class TestGenClass extends BaseObject
{
	/**
	 * @var int
	 */
	public int $id;
	/**
	 * @var string
	 */
	public string $firstName;
	/**
	 * @var string
	 */
	public string $lastName;
	/**
	 * @var string
	 */
	public string $email;
	/**
	 * @var string
	 */
	public string $gender;
	/**
	 * @var string
	 */
	public string $ipAddress;
	/**
	 * @var TestAddressesClass[]
	 */
	public array $testAddressesClass;
	/**
	 * @var string[]
	 */
	public array $skills;
}
  • File: TestAddressesClass.php
<?php

namespace common\models;

using yii\base\BaseObject;

/***
 * Class TestAddressesClass
 * @package common\models
 */
class TestAddressesClass extends BaseObject
{
	/**
	 * @var string
	 */
	public string $name;
	/**
	 * @var string
	 */
	public string $city;
	/**
	 * @var string
	 */
	public string $street;
	/**
	 * @var string
	 */
	public string $house;
	/**
	 * @var TestCoordinatesClass
	 */
	public TestCoordinatesClass $testCoordinatesClass;
}
  • File: TestCoordinatesClass.php
<?php

namespace common\models;

using yii\base\BaseObject;

/***
 * Class TestCoordinatesClass
 * @package common\models
 */
class TestCoordinatesClass extends BaseObject
{
	/**
	 * @var float
	 */
	public float $lon;
	/**
	 * @var float
	 */
	public float $lat;
}

GoLang

Template:

package main

{{ SPLIT }}

type {{ Name.PascalCase }} struct {
{{ Properties }}
	{{ Name.PascalCase }} {{ Type.Doc }} `json:"{{ Name.CamelCase }}"`
{{ /Properties }}
}
{{ /SPLIT }}

CLI-command: gendata gen -l php -t template.txt -d data.json --rootClassName Gen

Generated:

  • File: gen.go
package main


type Gen struct {
	Id int `json:"id"`
	FirstName string `json:"firstName"`
	LastName string `json:"lastName"`
	Email string `json:"email"`
	Gender string `json:"gender"`
	IpAddress string `json:"ipAddress"`
	Addresses []*Addresses `json:"addresses"`
	Skills []string `json:"skills"`
}

type Addresses struct {
	Name string `json:"name"`
	City string `json:"city"`
	Street string `json:"street"`
	House string `json:"house"`
	Coordinates *Coordinates `json:"coordinates"`
}

type Coordinates struct {
	Lon float64 `json:"lon"`
	Lat float64 `json:"lat"` 
}

Clone this wiki locally