webmodules/dummy-json

此包已被弃用且不再维护。未建议替代包。

dummy-json:JSON生成器和模板

维护者

详细信息

gitlab.com/webmodules/dummy-json

主页

安装: 112

依赖: 1

建议者: 0

安全: 0

0.0.9 2015-03-15 17:42 UTC

This package is auto-updated.

Last update: 2017-07-25 11:03:07 UTC


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}}

生成一个随机的 truefalse 布尔值。

{{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 数组是最小的,因此最终的前缀和姓氏永远不会出现。