UNPKG

rapnc

Version:

Node client for RAP 1.0

78 lines (73 loc) 2.34 kB
function toJSON(params, obj) { if (!params) { return; } params.forEach(function(param) { var name = param.identifier; if (param.id) { name = name + '|_' + param.id + '_'; } var dataType = param.data_type; if (dataType == 'object') { obj[name] = {}; toJSON(param.params, obj[name]); } else if (dataType == 'array<object>') { obj[name] = [{}]; toJSON(param.params, obj[name][0]); } else { var value; if (param.remark) { value = param.remark.replace(/^@[\w\d_-]+=/, '').trim(); } else { value = '1'; } if (dataType == 'number') { // 尽力转化成数字 var num = Number(value); if (!isNaN(num)) { value = num; } } else if (dataType == 'string') { // TODO if @mock? //value = '' + value; } else if (dataType == 'boolean') { // 尽力转化成boolean if (value === 'true' || value === true) { value = true; } else if (value === 'false' || value === false) { value = false; } //value = !!value; } else { value = value || 1; } if (dataType.indexOf('array') != -1) { if (value.indexOf('[') != 0) { value = [value]; } else { value = JSON.parse(value); } } if (param.identifier.indexOf('|') != -1) { // 意味着从中选一个 if (typeof value == 'string' && value[0] == '[' && value[value.length - 1] == ']') { value = JSON.parse(value); } } obj[name] = value; } }) return obj; } function getMockjsRules(origin, prop) { if (!origin) { return; } prop = prop || 'responseParams'; var responses = origin[prop]; if (!responses || responses.length == 0) { return; } return toJSON(responses, {}); } exports.getMockjsRules = getMockjsRules;