# mock-json **Repository Path**: TomSale/mock-json ## Basic Information - **Project Name**: mock-json - **Description**: 根据json结构 mock一份随机数据,常用于数据测试。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-31 - **Last Updated**: 2025-07-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## MockJson使用说明 生成mock数据的利器,根据给定json模板生成一份mock数据。 ### 实现思路: 数据模板+上下文=渲染后数据 ### 使用说明: 数据模板中的每个属性由 2部分构成:属性名、生成规则 属性名: jsonKey 生成规则: type|param(若带-则标识区间)|format(指定字符串格式) + type 数据来源 + param 参数指定 若值带:需要以`' '`包裹。若需使用函数 仅需在:后面指定函数 ```json #不带函数 string|abbc| #带函数func(p1,p2...) string|abc:toUpperCase| #带:的参数 string|'abc:aaa':func(p1,p2) ``` + format 参数格式化类型 生成规则支持属性类型: | type | param | format | desc | | --------- | ------------------ | --------------------------------------- | ------------------------------------------------- | | string | 区间/指定值 | | 字符串 | | text | 指定值 | | 原样输出 | | int | 区间/指定值 | | 整型值 | | enum | 枚举值,分割 | | 枚举 | | date | 日期(默认当前日期) | 值格式(yyyMMdd) | 日期 若传参格式必须为yyyy-MM-dd | | datetime | 时间(默认当前时间) | 值格式(yyyMMddHHmmss) | 日期时间 若传参格式必须为yyyy-MM-dd HH:mm:ss | | timestamp | 指定/默认当前 | 10/13 | 时间戳随机生成 | | decimal | 区间/数值 | #.## | 数值 格式化修饰符才考String.format的 | | repeat | 值 | 重复次数 | 重复生成一个值 | | phone | | | 随机生成手机号 | | name | | | 随机一个中文姓名 | | zipcode | | | 邮编 | | address | | | 随机地址 | | email | | | 随机生成邮箱 | | ref | json key | | 支持JSON上下文引用,顺序必须下引用上,多级平铺引用 | | ctx | 上下文 | 目前支持person\|bank,支持用户扩充上下文 | 上下文引用,支持不同类型的套件生成 | 上下文关联属性: person: ```json { "birthday": "1967-04-01", "address": "北京市北京市东城区冯旁87号", "gender": "女", "city": "北京市", "idCard": "110101196704013446", "provinceCode": "110000", "cityCode": "110100", "county": "东城区", "building": "87", "countyCode": "110101", "province": "北京市", "street": "冯旁", "name": "许智渊" } ``` bank: ```json { "bankPhone": "13016216621", "bankCardNo": "6227002999948655901", "cardType": "信用卡", "bankName": "中国农业银行", "cnapsCode": "103471758213", "bankCode":"C10001" } ``` company ```json { "companyName": "昭掳灰蜗驭絮咨询股份有限公司", "creditNo": "914106028ECUGT0L40", "companyAddress": "山东省青岛市黄岛区旺回东路697号水晶华都18栋1单元2304房", "legalPerson": "付阔", "establishDate": "2022-11-19" } ``` 上下文使用规则 : + ctx|name|person -> 默认生成套件 ctx.person=>person 至上下文 。 + ctx|p1.name|person -> 默认生成套件 ctx.p1=>persion 至上下文 + ctx|bankPhone|bank -> 默认生成套件 ctx.bank=>bank 至上下文 + ctx|p1.bankPhone|bank -> 默认生成套件 ctx.p1.bankPhone 至上下文 ### 示例数据: ```json { "loanNo": "ctx|loanNo|", "partnerBizNo": "text|18|", "seqNo": "string|10-18|", "id": "text|abcd:toUpper|", "extid": "text|'abcd:aaa':toUpper|", "age": "int|18|", "repeatCnt": "repeat|1|8", "ageRange": "int|20-22|", "gender": "enum|男,女|", "email": "email||", "reqTime": "timestamp||10", "funcdate": "date|:fmtDate(yyyyMMdd,yyyy-MM-dd)|yyyyMMdd", "funcdateSec": "date|'2025-01-01':fmtDate(yyyy-MM-dd,yyyyMMdd)|yyyyMMdd", "funcdateTimeSec": "datetime|'2025-01-01 12:12:12':fmtDate(yyyy-MM-dd HH:mm:ss,yyyy年MM月dd日 HH时mm分ss秒)|", "date": "date||yyyyMMdd", "dateSec": "date|2025-12-18|yyyyMMdd", "dateTime": "datetime||yyyyMMddHHmmss", "dateTimeSec": "datetime|'2025-12-18 12:10:10'|yyyyMMddHHmmss", "amt": "decimal|10-20|#.##", "ocrInfo": { "name": "ctx|name|person", "idCard": "ctx|idCard|person" }, "relations": [{ "relatedName": "ctx|p1.name|person", "provinceCode": "enum|1,2,3" }], "backUserName": "ref|ocrInfo.name|", "relatedName": "ref|relations[0].relatedName|", "bankInfo": { "baneNo": "ctx|b1.bankCardNo|bank" } } ``` 渲染结果: ```json { "loanNo": "1948307184238292992", "partnerBizNo": "18", "seqNo": "4160944001002376", "id": "ABCD", "extid": "ABCD:AAA", "age": 14, "repeatCnt": "11111111", "ageRange": 22, "gender": "女", "email": "marquis.considine@gmail.com", "reqTime": 1753347605, "funcdate": "2025-07-24", "funcdateSec": "20250101", "funcdateTimeSec": "2025年01月01日 12时12分12秒", "date": "20250724", "dateSec": "20251218", "dateTime": "20250724170005", "dateTimeSec": "20251218121010", "amt": "18.09", "ocrInfo": { "name": "戴梓晨", "idCard": "110101198406268909" }, "relations": [ { "relatedName": "邱明杰", "provinceCode": "2" } ], "backUserName": "戴梓晨", "relatedName": "邱明杰", "bankInfo": { "baneNo": "622262109815532208" } } ```