webmodules / dummy-json
dummy-json:JSON生成器和模板
Requires
- webmodules/handlebars.js: 3.0.1
README
dummy-json 是一个 Node 工具,允许您使用 Handlebars 模板生成随机 JSON 数据。它返回一个兼容 JSON 的字符串,您可以在应用程序中使用。它用于创建返回模拟数据的模拟 API 服务很有用。
示例
要查看完整的助手列表,请参阅 可用的助手 部分。
模板{ "people": [ {{#repeat 2}} { "id": {{index}}, "firstName": "{{firstName}}", "lastName": "{{lastName}}", "email": "{{email}}", "work": "{{company}}", "age": {{number 20 50}}, "optedin": {{boolean}} } {{/repeat}} ], "images": [ {{#repeat 3 6}} 'img{{index}}.png' {{/repeat}} ], "revision": {{uniqueIndex}}, "tolerance": {{number '0' '2'}}, } | 输出{ "people": [ { "id": 0, "firstName": "Leanne", "lastName": "Flinn", "email": "leanne.flinn@unilogic.com", "work": "Unilogic", "age": 26, "optedin": true }, { "id": 1, "firstName": "Edward", "lastName": "Young", "email": "edward.young@solexis.com", "work": "Solexis", "age": 31, "optedin": false } ], "images": [ 'img0.png', 'img1.png', 'img2.png', 'img3.png' ], "revision": 0, "tolerance": 1.7508240924216807, } |
入门
通过 npm 安装
npm install dummy-json
生成 JSON
var dummyjson = require('dummy-json');
var template = '{ "name": {{firstName}}, "age": {{number 18 65}} }';
var result = dummyjson.parse(template);
从文件生成
您可以使用 Node 的 fs 实用工具从文件加载模板,而不是编写多行字符串。
var fs = require('fs');
var dummyjson = require('./dummy-json');
var template = fs.readFileSync('template.hbs', {encoding: 'utf8'});
var result = dummyjson.parse(template);
转换为 JavaScript 对象
如果输出没有错误,则返回的字符串可以被解析为 JavaScript 对象。
var result = dummyjson.parse(template);
var obj = JSON.parse(result);
与 HTTP 响应一起使用
Dummy JSON 的常见用法是创建一个模拟 API 服务,该服务返回随机数据,您可以对其进行测试。以下是一个使用 Express 的快速示例。
var fs = require('fs');
var express = require('express');
var dummyjson = require('./dummy-json');
var template = fs.readFileSync('template.hbs', {encoding: 'utf8'});
var app = express();
app.get('/people', function(req, res) {
res.set('Content-Type', 'application/json');
res.send(dummyjson.parse(template));
});
app.listen(3000);
可用的助手
{{#repeat [count/array] [maxCount]}} ... {{/repeat}}
重复内容块。类似于 Handlebars 内置的 each
,但项目之间添加逗号并整理空白。
{{#repeat 4}} // Repeats the block exactly 4 times
"hello"
{{/repeat}}
{{#repeat 5 10}} // Repeats the block a random number of times between 5 and 10
"hello"
{{/repeat}}
{{#repeat animals}} // Loops over array provided in the data options of parse()
"{{this}}"
{{/repeat}}
您可以使用 {{index}}
打印循环的当前索引。这是一个仅在 repeat
块内可用的助手(在 repeat
块之外将打印 undefined
)。
{{#repeat 4}}
"hello {{index}}" // "hello 1", "hello 2", etc.
{{/repeat}}
{{number [min/max] [max] [pad=true]}}
生成一个随机数字。如果只提供一个数字,它将在 0 和该数字之间生成一个数字。min 和 max 值包含在生成的数字中。可以通过在数字周围添加引号来生成浮点数。如果使用 pad
选项,则会在生成的数字前面填充前导零(仅整数)。
{{number 20}} // Generates a random integer between 0 and 20
{{number 50 100}} // Generates a random integer between 50 and 100
{{number 50 100 pad=true}} // Pad integer with leading zeros, eg: 076
{{number '5.5' '8.5'}} // Generates a random float between 5.5 and 8.5
{{boolean}}
生成一个随机的 true
或 false
布尔值。
{{firstName}}
生成一个随机的前缀,来自预定义的列表。
{{lastName}}
生成一个随机的姓氏,来自预定义的列表。
{{company}}
生成一个随机的公司名称,来自预定义的列表。
{{email}}
生成一个随机的电子邮件地址,使用最近打印的名称和公司。这意味着当与名称和公司一起使用时,它们会保持同步。
{{uniqueIndex}}
生成一个唯一的索引,每次使用时始终递增 1,无论是否在 repeat 循环内。
高级用法
parse
方法接受第二个参数,允许您配置解析程序。它是一个普通对象,可以包含以下选项之一或多个:
使用您自己的 Handlebars 助手
var helpers = {
orientation: function(options) {
return Math.random() > 0.5 ? 'left' : 'right';
}
};
var template = '{ "position": {{orientation}} }';
var result = dummyjson.parse(template, {helpers: helpers});
自定义助手可以覆盖内置助手,这允许您修改可用的助手的工作方式。有关编写助手的更多信息,请参阅 Handlebars 文档。
使用您自己的数据
var data = {
animals: ['cat', 'dog', 'cow', 'wolf', 'giraffe']
};
var template = '{ "pets": [ {{#repeat animals}}{{this}}{{/repeat}} ] }';
var result = dummyjson.parse(template, {data: data});
对于将真实数据的片段插入到生成的响应中很有用。所有常规 Handlebars 功能都可以与数据一起使用。
使用您自己的名称和公司列表
var firstNames = ['Frasier', 'Olivia', 'Marge', 'Holbeck'];
var lastNames = ['Crane', 'Dunham', 'Gunderson', 'Ghyll'];
var companies = ['KACL', 'Fringe', 'MPD'];
var template = '{ "name": {{firstName}}, "company": {{company}} }';
var result = dummyjson.parse(template, {
firstNames: firstNames,
lastNames: lastNames,
companies: companies
});
使用您自己的名称和公司将完全覆盖内置集合。您可以指定一个数组,也可以指定所有数组,如上面所做的那样。注意:名称和公司在重复使用时会循环 - 为了保持同步,将使用 最小 数组的长度作为循环点。在上面的示例中,companies
数组是最小的,因此最终的前缀和姓氏永远不会出现。