mirror of
https://github.com/eolinker/apinto
synced 2025-09-27 13:12:20 +08:00
1504 lines
37 KiB
Go
1504 lines
37 KiB
Go
package utils
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
)
|
|
|
|
// 官方格式json Schema
|
|
var test1 = `
|
|
{
|
|
"properties":{
|
|
"field0":{
|
|
"example":"abcd",
|
|
"type":"string"
|
|
},
|
|
"field1":{
|
|
"example":123.12,
|
|
"type":"number"
|
|
},
|
|
"field3":{
|
|
"properties":{
|
|
"field3_1":{
|
|
"type":"string"
|
|
},
|
|
"field3_2":{
|
|
"properties":{
|
|
"field3_2_1":{
|
|
"example":true,
|
|
"type":"boolean"
|
|
},
|
|
"field3_2_2":{
|
|
"items":{
|
|
"example":155.55,
|
|
"type":"integer"
|
|
},
|
|
"type":"array"
|
|
}
|
|
},
|
|
"type":"object"
|
|
}
|
|
},
|
|
"type":"object"
|
|
},
|
|
"field2":{
|
|
"items":{
|
|
"type":"string"
|
|
},
|
|
"type":"array"
|
|
}
|
|
},
|
|
"type":"object"
|
|
}`
|
|
|
|
/*
|
|
mockJs template
|
|
|
|
var template = {
|
|
'name': '@cname', // 生成中文名字
|
|
'age|18-30': 20, // 生成18~30之间的随机整数
|
|
'gender|1': ['男', '女'], // 从数组中随机选取一个元素
|
|
'email': '@email' // 生成邮箱
|
|
}
|
|
|
|
Mock.toJSONSchema(template)生成的json schema
|
|
*/
|
|
var mock1 = `{
|
|
"template": {
|
|
"name": "@cname",
|
|
"age|18-30": 20,
|
|
"gender|1": [
|
|
"男",
|
|
"女"
|
|
],
|
|
"email": "@email"
|
|
},
|
|
"type": "object",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT"
|
|
],
|
|
"properties": [
|
|
{
|
|
"name": "name",
|
|
"template": "@cname",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"name"
|
|
]
|
|
},
|
|
{
|
|
"name": "age",
|
|
"template": 20,
|
|
"type": "number",
|
|
"rule": {
|
|
"parameters": [
|
|
"age|18-30",
|
|
"age",
|
|
null,
|
|
"18-30",
|
|
null
|
|
],
|
|
"range": [
|
|
"18-30",
|
|
"18",
|
|
"30"
|
|
],
|
|
"min": 18,
|
|
"max": 30,
|
|
"count": 22
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"age"
|
|
]
|
|
},
|
|
{
|
|
"name": "gender",
|
|
"template": [
|
|
"男",
|
|
"女"
|
|
],
|
|
"type": "array",
|
|
"rule": {
|
|
"parameters": [
|
|
"gender|1",
|
|
"gender",
|
|
null,
|
|
"1",
|
|
null
|
|
],
|
|
"range": [
|
|
"1",
|
|
"1",
|
|
null
|
|
],
|
|
"min": 1,
|
|
"count": 1
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"gender"
|
|
],
|
|
"items": [
|
|
{
|
|
"name": 0,
|
|
"template": "男",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"gender",
|
|
0
|
|
]
|
|
},
|
|
{
|
|
"name": 1,
|
|
"template": "女",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"gender",
|
|
1
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "email",
|
|
"template": "@email",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"email"
|
|
]
|
|
}
|
|
]
|
|
}`
|
|
|
|
/*
|
|
mockJs template
|
|
|
|
var template = {
|
|
'list|1-10': [{
|
|
'id|+1': 1,
|
|
'email': '@EMAIL'
|
|
}]
|
|
}
|
|
|
|
Mock.toJSONSchema(template)生成的json schema
|
|
*/
|
|
|
|
var mock2 = `{
|
|
"template": {
|
|
"list|1-10": [
|
|
{
|
|
"id|+1": 7,
|
|
"email": "@EMAIL"
|
|
}
|
|
]
|
|
},
|
|
"type": "object",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT"
|
|
],
|
|
"properties": [
|
|
{
|
|
"name": "list",
|
|
"template": [
|
|
{
|
|
"id|+1": 7,
|
|
"email": "@EMAIL"
|
|
}
|
|
],
|
|
"type": "array",
|
|
"rule": {
|
|
"parameters": [
|
|
"list|1-10",
|
|
"list",
|
|
null,
|
|
"1-10",
|
|
null
|
|
],
|
|
"range": [
|
|
"1-10",
|
|
"1",
|
|
"10"
|
|
],
|
|
"min": 1,
|
|
"max": 10,
|
|
"count": 2
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"list"
|
|
],
|
|
"items": [
|
|
{
|
|
"name": 0,
|
|
"template": {
|
|
"id|+1": 7,
|
|
"email": "@EMAIL"
|
|
},
|
|
"type": "object",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"list",
|
|
0
|
|
],
|
|
"properties": [
|
|
{
|
|
"name": "id",
|
|
"template": 7,
|
|
"type": "number",
|
|
"rule": {
|
|
"parameters": [
|
|
"id|+1",
|
|
"id",
|
|
"1",
|
|
null,
|
|
null
|
|
]
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"list",
|
|
0,
|
|
"id"
|
|
]
|
|
},
|
|
{
|
|
"name": "email",
|
|
"template": "@EMAIL",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"list",
|
|
0,
|
|
"email"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}`
|
|
|
|
/*
|
|
var template = {
|
|
'list|1-10': {
|
|
'id|+1': 1,
|
|
'email': '@EMAIL'
|
|
}
|
|
}
|
|
*/
|
|
var mock3 = `{
|
|
"template": {
|
|
"list|1-10": {
|
|
"id|+1": 1,
|
|
"email": "@EMAIL"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT"
|
|
],
|
|
"properties": [
|
|
{
|
|
"name": "list",
|
|
"template": {
|
|
"id|+1": 1,
|
|
"email": "@EMAIL"
|
|
},
|
|
"type": "object",
|
|
"rule": {
|
|
"parameters": [
|
|
"list|1-10",
|
|
"list",
|
|
null,
|
|
"1-10",
|
|
null
|
|
],
|
|
"range": [
|
|
"1-10",
|
|
"1",
|
|
"10"
|
|
],
|
|
"min": 1,
|
|
"max": 10,
|
|
"count": 4
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"list"
|
|
],
|
|
"properties": [
|
|
{
|
|
"name": "id",
|
|
"template": 1,
|
|
"type": "number",
|
|
"rule": {
|
|
"parameters": [
|
|
"id|+1",
|
|
"id",
|
|
"1",
|
|
null,
|
|
null
|
|
]
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"list",
|
|
"id"
|
|
]
|
|
},
|
|
{
|
|
"name": "email",
|
|
"template": "@EMAIL",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"list",
|
|
"email"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}`
|
|
|
|
/*
|
|
var template = {
|
|
'key|1-10': '★'
|
|
}
|
|
*/
|
|
var mock4 = `{
|
|
"template": {
|
|
"key|1-10": "★"
|
|
},
|
|
"type": "object",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT"
|
|
],
|
|
"properties": [
|
|
{
|
|
"name": "key",
|
|
"template": "★",
|
|
"type": "string",
|
|
"rule": {
|
|
"parameters": [
|
|
"key|1-10",
|
|
"key",
|
|
null,
|
|
"1-10",
|
|
null
|
|
],
|
|
"range": [
|
|
"1-10",
|
|
"1",
|
|
"10"
|
|
],
|
|
"min": 1,
|
|
"max": 10,
|
|
"count": 2
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"key"
|
|
]
|
|
}
|
|
]
|
|
}`
|
|
|
|
/*
|
|
var template = {
|
|
'title': 'Syntax Demo',
|
|
|
|
'string1|1-10': '★',
|
|
'string2|3': 'value',
|
|
|
|
'number1|+1': 100,
|
|
'number2|1-100': 100,
|
|
'number3|1-100.1-10': 1,
|
|
'number4|123.1-10': 1,
|
|
'number5|123.3': 1,
|
|
'number6|123.10': 1.123,
|
|
|
|
'boolean1|1': true,
|
|
'boolean2|1-2': true,
|
|
|
|
'object1|2-4': {
|
|
'110000': '北京市',
|
|
'120000': '天津市',
|
|
'130000': '河北省',
|
|
'140000': '山西省'
|
|
},
|
|
'object2|2': {
|
|
'310000': '上海市',
|
|
'320000': '江苏省',
|
|
'330000': '浙江省',
|
|
'340000': '安徽省'
|
|
},
|
|
'object3|2': {
|
|
'310000': '@name',
|
|
'320000': '@ip',
|
|
'330000': '@email'
|
|
},
|
|
|
|
'array1|1': ['AMD', 'CMD', 'KMD', 'UMD'],
|
|
'array2|1-10': [{
|
|
'id':10,
|
|
'ip':'@ip'
|
|
}],
|
|
'array3|3': ['Mock.js'],
|
|
'array4|3-5': [10,20,30,40]
|
|
}
|
|
*/
|
|
|
|
var mock5 = `{
|
|
"template": {
|
|
"title": "Syntax Demo",
|
|
"string1|1-10": "★",
|
|
"string2|3": "value",
|
|
"number1|+1": 101,
|
|
"number2|1-100": 100,
|
|
"number3|1-100.1-10": 1,
|
|
"number4|123.1-10": 1,
|
|
"number5|123.3": 1,
|
|
"number6|123.10": 1.123,
|
|
"boolean1|1": true,
|
|
"boolean2|1-2": true,
|
|
"object1|2-4": {
|
|
"110000": "北京市",
|
|
"120000": "天津市",
|
|
"130000": "河北省",
|
|
"140000": "山西省"
|
|
},
|
|
"object2|2": {
|
|
"310000": "上海市",
|
|
"320000": "江苏省",
|
|
"330000": "浙江省",
|
|
"340000": "安徽省"
|
|
},
|
|
"object3|2": {
|
|
"310000": "@name",
|
|
"320000": "@ip",
|
|
"330000": "@email"
|
|
},
|
|
"array1|1": [
|
|
"AMD",
|
|
"CMD",
|
|
"KMD",
|
|
"UMD"
|
|
],
|
|
"array2|1-10": [
|
|
{
|
|
"id": 10,
|
|
"ip": "@ip"
|
|
}
|
|
],
|
|
"array3|3": [
|
|
"Mock.js"
|
|
],
|
|
"array4|3-5": [
|
|
10,
|
|
20,
|
|
30,
|
|
40
|
|
]
|
|
},
|
|
"type": "object",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT"
|
|
],
|
|
"properties": [
|
|
{
|
|
"name": "title",
|
|
"template": "Syntax Demo",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"title"
|
|
]
|
|
},
|
|
{
|
|
"name": "string1",
|
|
"template": "★",
|
|
"type": "string",
|
|
"rule": {
|
|
"parameters": [
|
|
"string1|1-10",
|
|
"string1",
|
|
null,
|
|
"1-10",
|
|
null
|
|
],
|
|
"range": [
|
|
"1-10",
|
|
"1",
|
|
"10"
|
|
],
|
|
"min": 1,
|
|
"max": 10,
|
|
"count": 5
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"string1"
|
|
]
|
|
},
|
|
{
|
|
"name": "string2",
|
|
"template": "value",
|
|
"type": "string",
|
|
"rule": {
|
|
"parameters": [
|
|
"string2|3",
|
|
"string2",
|
|
null,
|
|
"3",
|
|
null
|
|
],
|
|
"range": [
|
|
"3",
|
|
"3",
|
|
null
|
|
],
|
|
"min": 3,
|
|
"count": 3
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"string2"
|
|
]
|
|
},
|
|
{
|
|
"name": "number1",
|
|
"template": 101,
|
|
"type": "number",
|
|
"rule": {
|
|
"parameters": [
|
|
"number1|+1",
|
|
"number1",
|
|
"1",
|
|
null,
|
|
null
|
|
]
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"number1"
|
|
]
|
|
},
|
|
{
|
|
"name": "number2",
|
|
"template": 100,
|
|
"type": "number",
|
|
"rule": {
|
|
"parameters": [
|
|
"number2|1-100",
|
|
"number2",
|
|
null,
|
|
"1-100",
|
|
null
|
|
],
|
|
"range": [
|
|
"1-100",
|
|
"1",
|
|
"100"
|
|
],
|
|
"min": 1,
|
|
"max": 100,
|
|
"count": 61
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"number2"
|
|
]
|
|
},
|
|
{
|
|
"name": "number3",
|
|
"template": 1,
|
|
"type": "number",
|
|
"rule": {
|
|
"parameters": [
|
|
"number3|1-100.1-10",
|
|
"number3",
|
|
null,
|
|
"1-100",
|
|
"1-10"
|
|
],
|
|
"range": [
|
|
"1-100",
|
|
"1",
|
|
"100"
|
|
],
|
|
"min": 1,
|
|
"max": 100,
|
|
"count": 70,
|
|
"decimal": [
|
|
"1-10",
|
|
"1",
|
|
"10"
|
|
],
|
|
"dmin": 1,
|
|
"dmax": 10,
|
|
"dcount": 6
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"number3"
|
|
]
|
|
},
|
|
{
|
|
"name": "number4",
|
|
"template": 1,
|
|
"type": "number",
|
|
"rule": {
|
|
"parameters": [
|
|
"number4|123.1-10",
|
|
"number4",
|
|
null,
|
|
"123",
|
|
"1-10"
|
|
],
|
|
"range": [
|
|
"123",
|
|
"123",
|
|
null
|
|
],
|
|
"min": 123,
|
|
"count": 123,
|
|
"decimal": [
|
|
"1-10",
|
|
"1",
|
|
"10"
|
|
],
|
|
"dmin": 1,
|
|
"dmax": 10,
|
|
"dcount": 7
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"number4"
|
|
]
|
|
},
|
|
{
|
|
"name": "number5",
|
|
"template": 1,
|
|
"type": "number",
|
|
"rule": {
|
|
"parameters": [
|
|
"number5|123.3",
|
|
"number5",
|
|
null,
|
|
"123",
|
|
"3"
|
|
],
|
|
"range": [
|
|
"123",
|
|
"123",
|
|
null
|
|
],
|
|
"min": 123,
|
|
"count": 123,
|
|
"decimal": [
|
|
"3",
|
|
"3",
|
|
null
|
|
],
|
|
"dmin": 3,
|
|
"dmax": null,
|
|
"dcount": 3
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"number5"
|
|
]
|
|
},
|
|
{
|
|
"name": "number6",
|
|
"template": 1.123,
|
|
"type": "number",
|
|
"rule": {
|
|
"parameters": [
|
|
"number6|123.10",
|
|
"number6",
|
|
null,
|
|
"123",
|
|
"10"
|
|
],
|
|
"range": [
|
|
"123",
|
|
"123",
|
|
null
|
|
],
|
|
"min": 123,
|
|
"count": 123,
|
|
"decimal": [
|
|
"10",
|
|
"10",
|
|
null
|
|
],
|
|
"dmin": 10,
|
|
"dmax": null,
|
|
"dcount": 10
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"number6"
|
|
]
|
|
},
|
|
{
|
|
"name": "boolean1",
|
|
"template": true,
|
|
"type": "boolean",
|
|
"rule": {
|
|
"parameters": [
|
|
"boolean1|1",
|
|
"boolean1",
|
|
null,
|
|
"1",
|
|
null
|
|
],
|
|
"range": [
|
|
"1",
|
|
"1",
|
|
null
|
|
],
|
|
"min": 1,
|
|
"count": 1
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"boolean1"
|
|
]
|
|
},
|
|
{
|
|
"name": "boolean2",
|
|
"template": true,
|
|
"type": "boolean",
|
|
"rule": {
|
|
"parameters": [
|
|
"boolean2|1-2",
|
|
"boolean2",
|
|
null,
|
|
"1-2",
|
|
null
|
|
],
|
|
"range": [
|
|
"1-2",
|
|
"1",
|
|
"2"
|
|
],
|
|
"min": 1,
|
|
"max": 2,
|
|
"count": 2
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"boolean2"
|
|
]
|
|
},
|
|
{
|
|
"name": "object1",
|
|
"template": {
|
|
"110000": "北京市",
|
|
"120000": "天津市",
|
|
"130000": "河北省",
|
|
"140000": "山西省"
|
|
},
|
|
"type": "object",
|
|
"rule": {
|
|
"parameters": [
|
|
"object1|2-4",
|
|
"object1",
|
|
null,
|
|
"2-4",
|
|
null
|
|
],
|
|
"range": [
|
|
"2-4",
|
|
"2",
|
|
"4"
|
|
],
|
|
"min": 2,
|
|
"max": 4,
|
|
"count": 4
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"object1"
|
|
],
|
|
"properties": [
|
|
{
|
|
"name": "110000",
|
|
"template": "北京市",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"object1",
|
|
"110000"
|
|
]
|
|
},
|
|
{
|
|
"name": "120000",
|
|
"template": "天津市",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"object1",
|
|
"120000"
|
|
]
|
|
},
|
|
{
|
|
"name": "130000",
|
|
"template": "河北省",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"object1",
|
|
"130000"
|
|
]
|
|
},
|
|
{
|
|
"name": "140000",
|
|
"template": "山西省",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"object1",
|
|
"140000"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "object2",
|
|
"template": {
|
|
"310000": "上海市",
|
|
"320000": "江苏省",
|
|
"330000": "浙江省",
|
|
"340000": "安徽省"
|
|
},
|
|
"type": "object",
|
|
"rule": {
|
|
"parameters": [
|
|
"object2|2",
|
|
"object2",
|
|
null,
|
|
"2",
|
|
null
|
|
],
|
|
"range": [
|
|
"2",
|
|
"2",
|
|
null
|
|
],
|
|
"min": 2,
|
|
"count": 2
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"object2"
|
|
],
|
|
"properties": [
|
|
{
|
|
"name": "310000",
|
|
"template": "上海市",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"object2",
|
|
"310000"
|
|
]
|
|
},
|
|
{
|
|
"name": "320000",
|
|
"template": "江苏省",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"object2",
|
|
"320000"
|
|
]
|
|
},
|
|
{
|
|
"name": "330000",
|
|
"template": "浙江省",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"object2",
|
|
"330000"
|
|
]
|
|
},
|
|
{
|
|
"name": "340000",
|
|
"template": "安徽省",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"object2",
|
|
"340000"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "object3",
|
|
"template": {
|
|
"310000": "@name",
|
|
"320000": "@ip",
|
|
"330000": "@email"
|
|
},
|
|
"type": "object",
|
|
"rule": {
|
|
"parameters": [
|
|
"object3|2",
|
|
"object3",
|
|
null,
|
|
"2",
|
|
null
|
|
],
|
|
"range": [
|
|
"2",
|
|
"2",
|
|
null
|
|
],
|
|
"min": 2,
|
|
"count": 2
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"object3"
|
|
],
|
|
"properties": [
|
|
{
|
|
"name": "310000",
|
|
"template": "@name",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"object3",
|
|
"310000"
|
|
]
|
|
},
|
|
{
|
|
"name": "320000",
|
|
"template": "@ip",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"object3",
|
|
"320000"
|
|
]
|
|
},
|
|
{
|
|
"name": "330000",
|
|
"template": "@email",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"object3",
|
|
"330000"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "array1",
|
|
"template": [
|
|
"AMD",
|
|
"CMD",
|
|
"KMD",
|
|
"UMD"
|
|
],
|
|
"type": "array",
|
|
"rule": {
|
|
"parameters": [
|
|
"array1|1",
|
|
"array1",
|
|
null,
|
|
"1",
|
|
null
|
|
],
|
|
"range": [
|
|
"1",
|
|
"1",
|
|
null
|
|
],
|
|
"min": 1,
|
|
"count": 1
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"array1"
|
|
],
|
|
"items": [
|
|
{
|
|
"name": 0,
|
|
"template": "AMD",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"array1",
|
|
0
|
|
]
|
|
},
|
|
{
|
|
"name": 1,
|
|
"template": "CMD",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"array1",
|
|
1
|
|
]
|
|
},
|
|
{
|
|
"name": 2,
|
|
"template": "KMD",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"array1",
|
|
2
|
|
]
|
|
},
|
|
{
|
|
"name": 3,
|
|
"template": "UMD",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"array1",
|
|
3
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "array2",
|
|
"template": [
|
|
{
|
|
"id": 10,
|
|
"ip": "@ip"
|
|
}
|
|
],
|
|
"type": "array",
|
|
"rule": {
|
|
"parameters": [
|
|
"array2|1-10",
|
|
"array2",
|
|
null,
|
|
"1-10",
|
|
null
|
|
],
|
|
"range": [
|
|
"1-10",
|
|
"1",
|
|
"10"
|
|
],
|
|
"min": 1,
|
|
"max": 10,
|
|
"count": 1
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"array2"
|
|
],
|
|
"items": [
|
|
{
|
|
"name": 0,
|
|
"template": {
|
|
"id": 10,
|
|
"ip": "@ip"
|
|
},
|
|
"type": "object",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"array2",
|
|
0
|
|
],
|
|
"properties": [
|
|
{
|
|
"name": "id",
|
|
"template": 10,
|
|
"type": "number",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"array2",
|
|
0,
|
|
"id"
|
|
]
|
|
},
|
|
{
|
|
"name": "ip",
|
|
"template": "@ip",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"array2",
|
|
0,
|
|
"ip"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "array3",
|
|
"template": [
|
|
"Mock.js"
|
|
],
|
|
"type": "array",
|
|
"rule": {
|
|
"parameters": [
|
|
"array3|3",
|
|
"array3",
|
|
null,
|
|
"3",
|
|
null
|
|
],
|
|
"range": [
|
|
"3",
|
|
"3",
|
|
null
|
|
],
|
|
"min": 3,
|
|
"count": 3
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"array3"
|
|
],
|
|
"items": [
|
|
{
|
|
"name": 0,
|
|
"template": "Mock.js",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"array3",
|
|
0
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "array4",
|
|
"template": [
|
|
10,
|
|
20,
|
|
30,
|
|
40
|
|
],
|
|
"type": "array",
|
|
"rule": {
|
|
"parameters": [
|
|
"array4|3-5",
|
|
"array4",
|
|
null,
|
|
"3-5",
|
|
null
|
|
],
|
|
"range": [
|
|
"3-5",
|
|
"3",
|
|
"5"
|
|
],
|
|
"min": 3,
|
|
"max": 5,
|
|
"count": 5
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"array4"
|
|
],
|
|
"items": [
|
|
{
|
|
"name": 0,
|
|
"template": 10,
|
|
"type": "number",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"array4",
|
|
0
|
|
]
|
|
},
|
|
{
|
|
"name": 1,
|
|
"template": 20,
|
|
"type": "number",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"array4",
|
|
1
|
|
]
|
|
},
|
|
{
|
|
"name": 2,
|
|
"template": 30,
|
|
"type": "number",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"array4",
|
|
2
|
|
]
|
|
},
|
|
{
|
|
"name": 3,
|
|
"template": 40,
|
|
"type": "number",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"array4",
|
|
3
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}`
|
|
|
|
var mock6 = `{
|
|
"template": {
|
|
"users|1": [
|
|
{
|
|
"email": "@email",
|
|
"name": "@name",
|
|
"ip": "@ip"
|
|
}
|
|
]
|
|
},
|
|
"type": "object",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT"
|
|
],
|
|
"properties": [
|
|
{
|
|
"name": "users",
|
|
"template": [
|
|
{
|
|
"email": "@email",
|
|
"name": "@name",
|
|
"ip": "@ip"
|
|
}
|
|
],
|
|
"type": "array",
|
|
"rule": {
|
|
"parameters": [
|
|
"users|1",
|
|
"users",
|
|
null,
|
|
"1",
|
|
null
|
|
],
|
|
"range": [
|
|
"1",
|
|
"1",
|
|
null
|
|
],
|
|
"min": 1,
|
|
"count": 1
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"users"
|
|
],
|
|
"items": [
|
|
{
|
|
"name": 0,
|
|
"template": {
|
|
"email": "@email",
|
|
"name": "@name",
|
|
"ip": "@ip"
|
|
},
|
|
"type": "object",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"users",
|
|
0
|
|
],
|
|
"properties": [
|
|
{
|
|
"name": "email",
|
|
"template": "@email",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"users",
|
|
0,
|
|
"email"
|
|
]
|
|
},
|
|
{
|
|
"name": "name",
|
|
"template": "@name",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"users",
|
|
0,
|
|
"name"
|
|
]
|
|
},
|
|
{
|
|
"name": "ip",
|
|
"template": "@ip",
|
|
"type": "string",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"users",
|
|
0,
|
|
"ip"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}`
|
|
|
|
var mock7 = `{
|
|
"template": {
|
|
"users|1-10": [
|
|
10,
|
|
20
|
|
]
|
|
},
|
|
"type": "object",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT"
|
|
],
|
|
"properties": [
|
|
{
|
|
"name": "users",
|
|
"template": [
|
|
10,
|
|
20
|
|
],
|
|
"type": "array",
|
|
"rule": {
|
|
"parameters": [
|
|
"users|1-10",
|
|
"users",
|
|
null,
|
|
"1-10",
|
|
null
|
|
],
|
|
"range": [
|
|
"1-10",
|
|
"1",
|
|
"10"
|
|
],
|
|
"min": 1,
|
|
"max": 10,
|
|
"count": 2
|
|
},
|
|
"path": [
|
|
"ROOT",
|
|
"users"
|
|
],
|
|
"items": [
|
|
{
|
|
"name": 0,
|
|
"template": 10,
|
|
"type": "number",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"users",
|
|
0
|
|
]
|
|
},
|
|
{
|
|
"name": 1,
|
|
"template": 20,
|
|
"type": "number",
|
|
"rule": {},
|
|
"path": [
|
|
"ROOT",
|
|
"users",
|
|
1
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}`
|
|
|
|
func TestJsonSchemaMockJsUnmarshal(t *testing.T) {
|
|
type args struct {
|
|
valueMap interface{}
|
|
}
|
|
|
|
valueMap := make(map[string]interface{})
|
|
json.Unmarshal([]byte(mock7), &valueMap)
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want interface{}
|
|
}{
|
|
{
|
|
name: "",
|
|
args: args{
|
|
valueMap: valueMap,
|
|
},
|
|
want: nil,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := JsonSchemaMockJsUnmarshal(tt.args.valueMap)
|
|
bytes, _ := json.Marshal(got)
|
|
t.Logf(string(bytes))
|
|
})
|
|
}
|
|
}
|