前端开发中,在做前后端分离的时候,经常需要手写json数据,有3个问题特别揪心:
- 数据是写死的,不能按一定的条件随机生成长度不一,内容不一的数据
- 写数组的时候,如果有很多条,需要一条一条地写,费时费力
- mock图片特别困难
randomjson用来根据模型随机生成json,mock json数据的时候特别有用
github地址: https://github.com/finance-sh/randomjson
randomjson
根据条件生成json对应的随机json
如何使用
安装
npm install randomjson
用法
// 安装
npm install randomjson
// 用法
// 引用包
var randomjson = require('randomjson');
// 模型
var modelJson = {
"code": "00",
"numberCode": "<@[10000,20000]>",
"msg": "<@chinese{12,50}>",
"msg2": "<@string{2,3}>",
"logo": "<@image{100,100}>",
"result": {
"pList<@{1,3}>":[
{
"indexToString": "<@index><@>",
"index": "<@index>",
"id": "<@[1-5]>",
"price": "<@float>",
"name": "公司名称<@index>",
"person": "李文武<@index>",
"address": "北京市海淀区西三旗",
"mobile": "1<@number{10}>",
"tel": "<@number{4}>-<@number{8}>",
"list": [
{
"auditKey": 1,
"auditValue": "<@[0,1,2]>"
},
{
"auditKey": 2,
"auditValue": "<@[0,1,2]>"
}
]
}
]
}
}
// 根据模型生成json
var myJson = randomjson(modelJson);
根据上边模型生成的json可能是这样:
{
"code": "00",
"numberCode": 10000,
"msg": "加义为边平压你治提用根治问求只或程干立农资特",
"msg2": "dv",
"logo": "https://dummyimage.com/100x100",
"result": {
"pList": [
{
"indexToString": "1",
"index": 1,
"id": 2,
"price": 93.78,
"name": "公司名称1",
"person": "李文武1",
"address": "北京市海淀区西三旗",
"mobile": "17929438781",
"tel": "1148-56055642",
"list": [
{
"auditKey": 1,
"auditValue": 0
},
{
"auditKey": 2,
"auditValue": 1
}
]
},
{
"indexToString": "2",
"index": 2,
"id": 5,
"price": 29.49,
"name": "公司名称2",
"person": "李文武2",
"address": "北京市海淀区西三旗",
"mobile": "17826945504",
"tel": "7298-46226026",
"list": [
{
"auditKey": 1,
"auditValue": 0
},
{
"auditKey": 2,
"auditValue": 0
}
]
}
]
}
}
词法
以<@
开始,以>
结束,中间内容是randomjson的词法
模型定义
数据类型
<@number>
: number类型
<@string>
: string类型
<@null>
: null
<@boolean>
: boolean类型
<@chinese>
: 中文字符串
<@float{number1,number2}>
: 浮点数 number1代表整数位数,number2代表小数位数,默认都为2
<@image{width,height}>
: 生成图片 width为生成图片宽度,height为生成图片高度,默认为400,400
<@index>
: 元素在数组中的位置,从1开始
量词
{minNumber, maxNumber}
: minNumber到maxNumber个
{minNumber,}
: 最少minNumber
{number}
: number个
如果是float,minNumber, maxNumber表示整数部分和小数部分的位数
如果是imgae,minNumber, maxNumber表示图片宽度高度
随机生成其中之一
你可以使用“|” 分离多个选项,随机值是其中之一,值为字符串
数字范围
[1,2,3]
表示1,2,3中的一个,值为数字
[1-90]
表示1到90中的一个int值,值为数字
数字转字符串
在number类型后加空的占位符
"indexToString": "<@index><@>"
量词定义注意点
值为非数组时,长度在value字符串里,例如:"ret": "<@number{4}>"
值为数组时,长度在key里,例如:
"p11<@{2,5}>": [{
"p8": "12312",
"p9": ["<@string{4,7}>"],
"p10": "<@string>"
}]
评论 (0)